我正在尝试使用绘制 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
这是一个使用shade
和ball
预设的选项
\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}