![Tikz:填充两个多边形之间的交点](https://linux22.com/image/305426/Tikz%EF%BC%9A%E5%A1%AB%E5%85%85%E4%B8%A4%E4%B8%AA%E5%A4%9A%E8%BE%B9%E5%BD%A2%E4%B9%8B%E9%97%B4%E7%9A%84%E4%BA%A4%E7%82%B9.png)
我正在尝试填充使用 tikz 制作的两个多边形的交点。但似乎我的\clip
和\fill
命令中有一些错误,我无法得到我想要的结果。这实际上是我想要的:
这是我为此目的编写的 TeX 脚本:
\documentclass[english]{scrreprt}
\usepackage{tikz}
\usetikzlibrary{shapes,calc,intersections}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[scale=2.5]
\node [draw, regular polygon,regular polygon sides=5,rotate=85,scale=8., name = A] at (0.3,0) {};
\node [draw, regular polygon,regular polygon sides=7,rotate=80,scale=10, name = B] at (1.4,0) {};
\begin{scope}
\clip (0.3,0) [regular polygon,regular polygon sides=5,rotate=85,scale=8.];
\fill [orange] (1.4,0) [regular polygon,regular polygon sides=7,rotate=80,scale=10];
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
正如您所看到的,我需要两个多边形质心的坐标,否则我只会使用命令\draw
来绘制它们。
万分感谢!
答案1
我可以解释为什么你用于填充交叉点的代码不起作用。你使用 anode
作为剪切路径,而 a 节点不是 a path
,只要你能声明一条真实的剪切路径,交叉点就会被填充。
下一个命令定义围绕正多边形角的封闭路径
\clip (A.corner 1) foreach \i in {2,3,4,5} {--(A.corner \i)} --cycle;
可用于剪切第二个多边形的复制品
\node[fill=orange, regular polygon,regular polygon sides=7,rotate=80,scale=10] at (1.4,0) {};
请注意,在第一个正多边形中也outer sep=0pt
添加了,因为否则scale
选项会移动corner
锚点。我不知道为什么(可能与此有关Note 1
)。
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,calc,intersections}
\begin{document}
\begin{tikzpicture}[scale=2.5]
\node[draw, shape=regular polygon,regular polygon sides=5,rotate=85,scale=8., name = A, outer sep=0pt] at (0.3,0) {};
\node[draw, regular polygon,regular polygon sides=7,rotate=80,scale=10, name = B] at (1.4,0) {};
\begin{scope}
\clip (A.corner 1) foreach \i in {2,3,4,5} {--(A.corner \i)} --cycle;
\node[fill=orange, regular polygon,regular polygon sides=7,rotate=80,scale=10] at (1.4,0) {};
\end{scope}
\end{tikzpicture}
\end{document}