【问题标题】:Polygon edge algorithm problem多边形边缘算法问题
【发布时间】:2011-09-15 03:58:33
【问题描述】:

我有 2D 多边形,它们的顶点位于局部多边形空间中。我正在尝试计算将在多边形内部形成统一长度边的新顶点。

目前要计算边缘,我基本上是在缩小原始顶点。对于每个多边形顶点,我计算否定的单位向量并将其乘以恒定的边长因子。然后我将它添加到原始多边形顶点。

伪代码:

const float edgeLength = 0.5;
for each vertex v
    vec2 n = -v.unit();
    vec2 edgeVertex = v + n * edgeLength;

结果在正多边形上效果很好:
screenshot 1

但是,在其他多边形上,例如矩形,边长不均匀:
screenshot 2

我尝试了很多不同的尝试,但到目前为止似乎没有任何效果,任何帮助将不胜感激,谢谢! (请忽略多边形是 3D 渲染的,实际多边形数据是 2D)。

【问题讨论】:

  • 规则/凸多边形或凹多边形需要这个吗?

标签: math vector geometry polygon


【解决方案1】:

将每个边缘移动固定距离,沿垂直于边缘的方向(如果边缘逆时针运行,则全部向左)。然后计算新边的交点——这些是新的顶点。

【讨论】:

  • 您不需要识别内饰就可以选择一种普通或另一种吗?
  • @belisarius:是的,但是如果有一个约定,比如所有的边都逆时针运行,那可能是微不足道的。只是其中一件可能会或可能不会很痛苦的事情,取决于我们不知道的现有实施的细节。
  • 一个适用于凹多边形的解决方案也是最佳的。我还找到了this link,这似乎是一个可能的解决方案,尽管我在 CGAL 之外找不到任何源代码。
  • @belisarius, @Chris:我的解决方案适用于非凸多边形。
  • 感谢测试版!您的解决方案有效,我找到了一些示例代码 here,它几乎实现了您的解决方案,而且效果很好!
猜你喜欢
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多