展开或收缩不规则多边形

时间:2012-11-02 11:16:03

标签: algorithm language-agnostic polygon

我有一个不规则多边形的坐标点,如(x1,y1)...(x1,y1)。我可以使用坐标计算多边形的面积。如何使用坐标扩展或缩小多边形区域。?

1 个答案:

答案 0 :(得分:5)

只需将每个坐标乘以固定值即可围绕原点进行缩放。

for each vertex i
  result[i].x = input[i].x * scale
  result[i].y = input[i].y * scale

如果你想围绕另一个点进行缩放:

translate to origin (subtract the scaling center)
scale by the correct amount (multiply by a constant)
translate from origin (add the scaling center)

要将区域缩放四倍,您需要将距离缩放两倍。因此,如果您的比例是根据面积定义的,请不要忘记转换为线性度量:

scale = sqrt area_scale

如果您想缩放音量:

scale = volume_scale ^ (1/3)