以下代码绘制了三个菱形,它们的端点固定在 (0,0)。有人能建议一种更好的方法来做同样的事情吗,比如绘制一个菱形,然后像复制一样旋转它们?谢谢!
\documentclass[10pt,a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{picture}(215,20)(0,0)
\begin{tikzpicture}
\pgftransformshift{\pgfpoint{90}{0}};
\filldraw[scale=1,color=black](0,0) circle(7cm); % plate
\filldraw[scale=1,white] (0,0)--++(120:2.966)--++(60:2.966)--++(300:2.966)--++(240:2.966) ;
\filldraw[scale=1,white] (0,0)--++(180:2.966)--++(240:2.966)--++(0:2.966)--++(60:2.966) ;
\filldraw[scale=1,white] (0,0)--++(0:2.966)--++(300:2.966)--++(180:2.966)--++(120:2.966) ;
\end{tikzpicture}
\end{picture}
\end{figure}
\end{document}
答案1
如果您只是想减少击键次数并避免手动计算角度,最简单的方法可能是使用循环foreach
:
\documentclass[10pt,a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{picture}(215,20)(0,0)
\begin{tikzpicture}
\pgftransformshift{\pgfpoint{90}{0}};
\filldraw[scale=1,color=black](0,0) circle(7cm); % plate
\foreach \angle in {0,120,240}
\filldraw[scale=1,white,rotate=\angle] (0,0)--++(120:2.966)--++(60:2.966)--++(300:2.966)--++(240:2.966) ;
\end{tikzpicture}
\end{picture}
\end{figure}
\end{document}
答案2
如上所述,使用旋转选项。您实际上无法复制 TikZ 内容。将坐标存储在宏中更简单:
\documentclass[10pt,a4paper]{article}
\usepackage{tikz}
\newcommand*\mydiamond{--++(120:2.966)--++(60:2.966)--++(300:2.966)--++(240:2.966)}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\pgftransformshift{\pgfpoint{90}{0}};
\filldraw[scale=1,color=black](0,0) circle(7cm); % plate
\filldraw[scale=1,white] (0,0) \mydiamond ;
\filldraw[scale=1,white,rotate=120] (0,0) \mydiamond ;
\filldraw[scale=1,white,rotate=240] (0,0) \mydiamond ;
\end{tikzpicture}
\end{figure}
\end{document}
第一个坐标(0,0)
不是宏的一部分,因此无法在其他地方重复使用。顺便说一句:picture
不需要环境。
答案3
可以删除一些无用的东西。我删除了图片环境和 \pgftransformshift 和 scale =1。默认颜色为黑色。
\documentclass[10pt,a4paper]{article}
\usepackage{tikz,fullpage}
\begin{document}
\begin{figure}[h]
\begin{tikzpicture}
\filldraw (0,0) circle(7cm);
\foreach \angle in {0,120,240}
\filldraw[color=white,rotate=\angle] (0,0)--++(120:3)--++(60:3)--++(300:3)--++(240:3);
\end{tikzpicture}
\end{figure}
\end{document}
答案4
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\fill (0:0) circle (7cm);
\foreach \r in {90,210,330}
\node[fill=white,shape=diamond,aspect=1.725,scale=9,rotate=\r] (a) at (\r:2.85) {};
\end{tikzpicture}
\end{document}