多边形三角测量的相反之处是什么?

xan*_*xan 2 geometry triangulation pathgeometry computational-geometry graphicspath

在我完成2D三角测量后,一些三角形具有相同的颜色,我想重新组合它们以绘制成相似颜色的图形路径.我发现如果我只是逐个绘制三角形,一些图形渲染器会显示三角形之间的接缝(至少如果涉及抗锯齿和/或透明度).

那么我如何获取一组(非重叠)三角形并生成一个图形路径,其中可能包含孔和不相交的多边形?

盲目地将三角形添加到图形路径实际上非常适合填充(当然不是用于抚摸),但是导出那些额外的内部点感觉不对.

bra*_*jam 7

将每个三角形视为由逆时针链中的三个矢量组成的轮廓.

<--^
| /
|/ 
V
Run Code Online (Sandbox Code Playgroud)

因此,对于形状中的所有三角形,请使用其轮廓矢量的并集.如果联合中的两个轮廓向量相同但向相反方向移动,则它们相互抵消并从联合中移除.

例如,对于两个并排的三角形,并集是6个向量

<--^^
| //|
|// |
VV-->
Run Code Online (Sandbox Code Playgroud)

这减少到4个向量,因为中间的两个对角矢量取消,因为它们相同但运行方向相反:

<--^
|  |
|  |
V-->
Run Code Online (Sandbox Code Playgroud)

您会发现这适用于较大的三角形聚合.只需将生成的矢量尾部连接到头部即可获得闭合路径.一些封闭的路径可以顺时针运行,这些是孔.

<-----<-----<-----^
|                 |
|                 |
V     ^----->     ^
|     |     |     |
|     |     |     |
V     <-----V     ^
|                 |
|                 |
V----->----->----->
Run Code Online (Sandbox Code Playgroud)