多边形边缘算法问题

时间:2011-06-15 01:05:55

标签: math vector geometry polygon

我有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)。

1 个答案:

答案 0 :(得分:1)

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