我不太确定你想要实现什么,但我可以看到两种可能性:A)绘制一个带孔的多边形或 B)在两个多边形之间进行布尔差分运算。
A) 绘制带孔的多边形
绕线顺序是关键。如果您有外部多边形(SVG 路径),它是顺时针(CW),如下所示:
"M155,61.67 L155,212.7 L288.98,212.7 L288.98,61.67 L173.01999999999998,61.67 L155,61.67Z"
和逆时针 (CCW) 的孔多边形(SVG 路径),如下所示:
"M274.37,190.77 L171.24,190.77 L171.24,81.16 L274.37,81.16 L274.37,81.16 L274.37,190.77Z"
然后你将它们组合成相同的路径:
"M155,61.67 L155,212.7 L288.98,212.7 L288.98,61.67 L173.01999999999998,61.67 L155,61.67ZM274.37,190.77 L171.24,190.77 L171.24,81.16 L274.37,81.16 L274.37,81.16 L274.37,190.77Z"
你得到以下带孔的多边形:
在上图中,似乎从外部多边形中减去了内部多边形。
B) 在两个多边形之间进行布尔差分运算
如果你想从另一个多边形中切割出一个多边形,并想通过在两个或多个多边形之间进行布尔差分运算来创建一个新几何体,你可以使用JAVASCRIPT CLIPPER,它有AN ONLINE DEMO,你可以在这里玩不同的布尔运算。您也可以通过单击多边形 - 自定义来输入您自己的多边形。您可以使用 SVG 路径语法输入它们(仅允许 MoveTo:s 和 LineTo:s)。还有一个多边形资源管理器,您可以在其中查看操作结果。也可以将输出视为 SVG 路径。还有A WIKI PAGE,里面有代码示例。
主题(“多边形”)和剪辑(“剪辑”)多边形的示例:
主题和剪辑多边形之间的布尔差异: