需要多少个点创建光滑的圆弧?

各位好。 我需要用ARCPY以点阵创建圆弧。显然,在ARCMAP中,圆弧越长,构成圆弧的点数越多。 请问,弧半径,弧角度与点数的关系应该怎样确定才能创建与ARCMAP平台同样光滑度的圆弧??
已邀请:

朱政

赞同来自:

这个是不是有相应算法的呀。

潘建伟

赞同来自:

点的多少与光滑度没有关系,3个点就可以创建光滑的圆弧。
点的多少决定了曲线多项式的阶数,也就是这个曲线能拐多少弯儿。
另外,我不记得arcpy中有以点阵创建圆弧的接口。

interfly

赞同来自:

谢谢回复。
在SHAPEFILE格式中,没有真曲线,所有曲线都是由点构成。下面的代码可以创建圆弧:
def circle_array(x,y,c1,c2,r):     #圆中心坐标, 起始角,终止角(度),半径   转换为矩阵
 ar=[]
 deg2rad=math.pi/180.0
 #pnt=arcpy.Point()
n=360
 for i in range(0,n+1):
  ang = (c1+(c2-c1)*i/n) * deg2rad
  arx=x + r * math.cos(ang)
  ary=y + r * math.sin(ang)
  
  ar.append([arx,ary,0])
 return ar 
 
arcpy.polygon(ar)
 
关键是我不知道如何确定点数N, 太小光滑度不够,太大,浪费机时和内存。
在ARCMAP中,用工具创建一个圆,然后再创建一个更大的圆。 对圆进行编辑,可以看到,构成大圆的点更多。
想知道,点数是如何确定的,应该有个算法,以构建与平台同样光滑度的圆。

zsf - SGG

赞同来自:

圆在构造过程中,只需要不共线的3点,圆心和半径,或者其他条件。
类似地,贝塞尔曲线,也是通过几个点表示较复杂的图形。
使用编辑器-创建要素对应的圆构造工具,可以通过确定圆心和半径画圆。通过观察可以发现,完成保存后,gdb存储了圆心和构造关系,而shp格式则存储了圆上的离散点。
有一点容易很少人注意到,gdb内所创建的线要素的FeatureType是line features,而shp线要素是polyline
个人推测,使用shp保存圆时候,记录的点数跟圆大小和要素类容差都有关系,也即要满足最近两点对应的弦高应小于容差的关系。

要回复问题请先登录注册