Tikz:填充两个多边形之间的交点

Tikz:填充两个多边形之间的交点

我正在尝试填充使用 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}

在此处输入图片描述

相关内容