首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用弧形创建多边形(或更好的库)

如何用弧形创建多边形(或更好的库)
EN

Stack Overflow用户
提问于 2015-06-10 16:37:41
回答 2查看 4.9K关注 0票数 6

我试图使用形状来识别形状所使用的区域,以及在数控路由器上切割它的工具所使用的区域。该形状是使用埃兹德克斯从dxf绘图中导入的。

工具路径可以是矩形(如果它们被沿着直线的锯片切割),也可以是一组段(如果它们是由铣削钻头路由的)。在这两种情况下,我都可以使用LineString.buffer()自动创建偏移量,并找到工具使用的区域。

我使用shapely是因为我认为这是找出形状是否重叠的最佳工具(使用union()将所有工具合并为一个形状,使用overlaps()查找干扰)。如果有更好的工具用于这个目的,请告诉我。

buffer()在创建段以表示拐角上的弧方面做得很好。

是否有一种方法来创建段来表示形状本身上的弧?

例如,如何在此形状的左侧创建弧?我是否需要创建自己的(慢速) python函数?还是有一种优化的外形方式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 16:58:16

在python中创建自己的弧形并不一定很慢。numpy在这些方面的操作非常好,而且shapely有意与Numpy进行良好的互操作。

例如,

代码语言:javascript
复制
import numpy as np
import shapely.geometry as geom

# Define the arc (presumably ezdxf uses a similar convention)
centerx, centery = 3, 4
radius = 2
start_angle, end_angle = 30, 56 # In degrees
numsegments = 1000

# The coordinates of the arc
theta = np.radians(np.linspace(start_angle, end_angle, numsegments))
x = centerx + radius * np.cos(theta)
y = centery + radius * np.sin(theta)

arc = geom.LineString(np.column_stack([x, y]))

在我的机器上,在开始角和结束角之间用1000个点近似弧需要3毫秒(这包括把它转换成一个形状良好的LineString)。

票数 10
EN

Stack Overflow用户

发布于 2015-06-10 17:02:26

我从来没有使用过形状,但我知道一些矢量图形原理。重叠通常用“差异”提取。如果你把多边形的差异取出来,剩下的就是你的弧线。https://gis.stackexchange.com/questions/11987/polygon-overlay-with-shapely

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30762329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档