如何偏移多边形的边缘?

时间:2019-01-04 06:07:20

标签: algorithm polygon offset point

我有一个point2D列表,该列表构成一个封闭的多边形。现在,我想通过在给定内部或外部选项以及偏移值的情况下偏移多边形来创建另一组2D点。我该怎么做? enter image description here

2 个答案:

答案 0 :(得分:1)

您需要使用方向才能定义外部/内部。更好的方法是使用箭头(矢量)的左/右。

在我的示例中,偏移量位于矢量的右侧,现在您需要计算红线的所有交点以定义线的新起点-终点。

示例:P0 =(5,2)&P1 =(2,1.7)

V1 = -3,-0.3。顺时针旋转90度可得到矢量-0.3,3(a,b)->(b,-a)

将向量除以3(即图形中的距离)可得出(-0.1,1) 通过向量对P0的设定点得出P0'(5,2)-v(-0.1,1)=(4.9,3)

enter image description here

答案 1 :(得分:0)

enter image description here

对于每个多边形顶点,将外部平分线向量计算为两个相邻边的归一化法线 na nb 的和),然后对其进行归一化

 bis = na + nb 
 bis = bis / Length(bis)

然后找到所需的平分线长度以提供偏移距离为

 l = d / Sqrt(1 + dotproduct(na,nb))

并获取偏移多边形顶点(使用负号表示内部偏移!):

P' = P + l * bis