如何使用坐标以厘米为单位缩小多边形
How to shrink polygon by a defined amount in centimetres using co-ordinates
我正在尝试将多边形缩小特定数量,其中新多边形中的所有边与旧多边形的距离相等。为了更好地解释,我在这里有一张图片。
如果图片不起作用,我这里有 link。
https://imgur.com/a/A27mVHs
这是草图。
我在 ([x,y]) 中有一个点数组
[[390,435], [388,430], [391,425], [425,428], [410,435]]
我正在尝试缩小它以便新数组
[[x1,y1], [x2,y2] ... [x5,y5]]
确保新区域与原区域之间的距离在该区域的所有边上都是2。
如何仅通过操纵坐标来做到这一点。我知道我需要某种标量向量,但我不确定该怎么做。我正在尝试在 javascript
中实现它
您是否做过一些研究,因为互联网上有很多关于该主题的话题,简短的回答是这并不容易,因为有很多边缘情况(look this topic for exemple).
如果您想查看更多内容并找到不错的库来为您完成此任务,一个很好的术语是多边形偏移
其他好的链接:
- An algorithm for inflating/deflating (offsetting, buffering) polygons
- ClipperOffset
- A Survey of Polygon Offseting Strategies
- Javascript Clipper
在一般情况下这确实是一个棘手的问题。但是对于凸多边形,这很容易。
在每个角度,绘制平分线并找到顶点距离等于 d / sin α/2
的点,其中 α
是角度的度量。
我正在尝试将多边形缩小特定数量,其中新多边形中的所有边与旧多边形的距离相等。为了更好地解释,我在这里有一张图片。
如果图片不起作用,我这里有 link。 https://imgur.com/a/A27mVHs
这是草图。
我在 ([x,y]) 中有一个点数组 [[390,435], [388,430], [391,425], [425,428], [410,435]]
我正在尝试缩小它以便新数组 [[x1,y1], [x2,y2] ... [x5,y5]]
确保新区域与原区域之间的距离在该区域的所有边上都是2。
如何仅通过操纵坐标来做到这一点。我知道我需要某种标量向量,但我不确定该怎么做。我正在尝试在 javascript
中实现它您是否做过一些研究,因为互联网上有很多关于该主题的话题,简短的回答是这并不容易,因为有很多边缘情况(look this topic for exemple).
如果您想查看更多内容并找到不错的库来为您完成此任务,一个很好的术语是多边形偏移
其他好的链接:
- An algorithm for inflating/deflating (offsetting, buffering) polygons
- ClipperOffset
- A Survey of Polygon Offseting Strategies
- Javascript Clipper
在一般情况下这确实是一个棘手的问题。但是对于凸多边形,这很容易。
在每个角度,绘制平分线并找到顶点距离等于 d / sin α/2
的点,其中 α
是角度的度量。