完成2D三角剖分后,有些三角形具有相同的颜色,我想重组它们以将其绘制成类似的图形路径。我发现,如果我只是绘制三角形,一些图形渲染器会在三角形之间显示接缝(至少涉及抗异化和/或透明度)。

那么,如何采用一组(非重叠的)三角形并产生一个可能包含孔和不相交多边形的图形路径?

盲目地将三角形添加到图形路径中实际上非常适合填充(尽管当然不是抚摸),但是导出这些额外的内部点并不适合。

有帮助吗?

解决方案

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

<--^
| /
|/ 
V

因此,对于所有三角形的三角形,请将其轮廓向量结合在一起。如果联盟中的两个大纲向量是相同的,但朝相反的方向发展,则它们相互取消并将其从工会中撤离。

例如,对于并排的两个三角形,联盟为6个向量

<--^^
| //|
|// |
VV-->

由于中间取消的两个对角线矢量,因此减少了4个向量,因为它们是相同的,但朝相反的方向运行:

<--^
|  |
|  |
V-->

您会发现这适用于更大的三角形聚集。只需将最终的向量尾部连接到头部即可获得封闭的路径。一些封闭的路径可能会顺时针旋转,这些都是孔。

<-----<-----<-----^
|                 |
|                 |
V     ^----->     ^
|     |     |     |
|     |     |     |
V     <-----V     ^
|                 |
|                 |
V----->----->----->
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top