xan*_*xan 2 geometry triangulation pathgeometry computational-geometry graphicspath
在我完成2D三角测量后,一些三角形具有相同的颜色,我想重新组合它们以绘制成相似颜色的图形路径.我发现如果我只是逐个绘制三角形,一些图形渲染器会显示三角形之间的接缝(至少如果涉及抗锯齿和/或透明度).
那么我如何获取一组(非重叠)三角形并生成一个图形路径,其中可能包含孔和不相交的多边形?
盲目地将三角形添加到图形路径实际上非常适合填充(当然不是用于抚摸),但是导出那些额外的内部点感觉不对.
将每个三角形视为由逆时针链中的三个矢量组成的轮廓.
<--^
| /
|/
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)