使用 tikz 进行 3D 仿真

使用 tikz 进行 3D 仿真

我正在尝试使用绘制 3d 任意体积tikz。2d 等效如下(礼貌:):

\begin{frame}
  \begin{tikzpicture}    
\pgfmathsetseed{3}
\draw[fill=blue!70] plot [smooth cycle, samples=8,domain={1:8}]
     (\x*360/8+5*rnd:0.5cm+1cm*rnd) node at (0,0) {};
\end{tikzpicture}
\end{frame}

是否可以给它一种 3D 的感觉?像漫射灯光效果之类的?

答案1

这是一个使用shadeball预设的选项

在此处输入图片描述

\documentclass[tikz,margin=0.5cm]{standalone}
\begin{document}
\begin{tikzpicture}    
\pgfmathsetseed{3}
\shade [ball color=blue!70] plot [smooth cycle, samples=8,domain={1:8}]
     (\x*360/8+5*rnd:0.5cm+1cm*rnd);
\end{tikzpicture}
\end{document}

更多示例

在此处输入图片描述

\documentclass[tikz,margin=0.5cm]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\S}{3}
\foreach \X in {1,...,3}{
  \foreach \Y in {1,...,3}{
     \begin{scope}[shift={(\S*\X,\S*\Y)}]
        \shade [ball color=blue!70] plot [smooth cycle, samples=8,domain={1:8}]
           (\x*360/8+5*rnd:0.5cm+1cm*rnd);
     \end{scope}
  }
}
\end{tikzpicture}
\end{document}

答案2

一个非常小的附录Milo 的精彩回答:有时您希望亮点不在原处\shade[ball color=...]...。您可以定义自己的阴影,或者,也许更简单,用中心偏移的形状裁剪一个圆圈。以下动画应该可以让您了解什么是可能的。最后,您必须自己决定什么看起来逼真,或者切换到asymptote,它会为您计算逼真的阴影。

\documentclass[tikz,margin=0.5cm]{standalone}
\begin{document}
\foreach \X in {1,2,...,42}
{\begin{tikzpicture}    
\pgfmathsetseed{\X}
\path[use as bounding box] (-4,-4) rectangle (4,4);
\clip plot [smooth cycle, samples=8,domain={1:8}]
     (\x*360/8+5*rnd:0.5cm+1cm*rnd);
\shade [ball color=blue!70] (0.5+rnd,-0.5+rnd) circle (3cm);     
\end{tikzpicture}}
\end{document}

在此处输入图片描述

相关内容