三维空间中的参数化曲线上存在以下特征点:
- 曲线上等距的点,
- 沿着等弦曲线分布的点,
- 与曲线上另一点保持一定距离的点。
对应三种方法:AbscissaPoint ,UniformAbscissa ,UniformDeflection
此处只试验:UniformDeflection,其他的自行查询api
(其中黄点为构成曲线的点,蓝点是均分曲线后的点)
from OCC.Core.GCPnts import GCPnts_UniformDeflection
from OCC.Core.GeomAPI import GeomAPI_Interpolate
from OCC.Core.GeomAdaptor import GeomAdaptor_Curve
from OCC.Core.TColgp import TColgp_HArray1OfPnt
from OCC.Core.gp import gp_Pnt
from OCC.Display.OCCViewer import rgb_color
from OCC.Display.SimpleGui import init_display
display, start_display, add_menu, add_function_to_menu = init_display()
mycurve=TColgp_HArray1OfPnt(1,3)
p1=gp_Pnt(0,1,2)
p2=gp_Pnt(2,1,3)
p3=gp_Pnt(6,2,1)
mycurve.SetValue(1,p1)
mycurve.SetValue(2,p2)
mycurve.SetValue(3,p3)
mycurve=GeomAPI_Interpolate(mycurve,False,0.0001)
mycurve.Perform()
display.DisplayShape(mycurve.Curve())
display.DisplayShape(p1,update=True)
display.DisplayShape(p2,update=True)
display.DisplayShape(p3,update=True)
# C=Geom2dAdaptor_Curve(mycurve) #二维曲线采用此条代码
C=GeomAdaptor_Curve(mycurve.Curve())
Deflection=0.1
myAlgo=GCPnts_UniformDeflection()
myAlgo.Initialize ( C , Deflection )
if myAlgo.IsDone() :
nbr = myAlgo.NbPoints()
print(nbr)
for i in range(1,nbr+1):
point=myAlgo.Value(i)
display.DisplayShape(point,update=True,color=rgb_color(0,0,1))
start_display()
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容