algorithm - 扩大或缩小不规则多边形

标签 algorithm language-agnostic polygon

<分区>

我有不规则多边形的坐标点,例如 (x1,y1) ...(x1,y1)。我能够使用坐标计算多边形的面积。如何使用坐标扩大或缩小多边形区域?

最佳答案

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

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)

关于algorithm - 扩大或缩小不规则多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13194140/

相关文章:

java - 观察递归期间创建的内部堆栈上的值

algorithm - SOA 是否支持方法组合?

python - 如何将这段代码从 python 循环重写为 numpy 向量(为了性能)?

algorithm - Fenwick 树确定一个点落在哪个区间

language-agnostic - 关于开始 child 编程的建议

algorithm - 自动 GOTO 删除算法

language-agnostic - 一个向前的单词和向后不同的单词的代码

java - 如何确定一个点是否在二维凸多边形内?

r - 识别位于纬度和经度坐标内的邮政编码

android - Google Maps API 多边形中的 fillColor 不起作用