【问题标题】:What's the opposite of polygon triangulation?多边形三角剖分的反面是什么?
【发布时间】:2010-08-28 15:53:08
【问题描述】:

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

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

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

【问题讨论】:

  • 删除所有多次出现的边? (其中一条边由它连接的两个点定义)
  • 不错的开始,但仍然存在将剩余边变成路径的问题,这对于接触多边形来说并非易事,然后找出哪些是其他人的洞。我希望这种操作有一个名称和一个可以处理部分共享边的通用算法。

标签: geometry computational-geometry triangulation pathgeometry graphicspath


【解决方案1】:

把每个三角形想象成一个由三个逆时针链组成的向量组成的轮廓。

<--^
| /
|/ 
V

所以对于你形状中的所有三角形,取它们的轮廓向量的并集。如果联合中的两个轮廓向量相同但方向相反,则它们相互抵消并从联合中移除。

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

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

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

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

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

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

【讨论】:

  • 谢谢,我没想过为边缘指定方向。漂亮的图表。
猜你喜欢
  • 1970-01-01
  • 2012-09-28
  • 2015-03-19
  • 2011-01-14
  • 2011-10-05
  • 1970-01-01
  • 2012-09-06
  • 2011-01-24
  • 2011-07-15
相关资源
最近更新 更多