pythonocc进阶学习:计算曲线上的点(points on curve)

三维空间中的参数化曲线上存在以下特征点:

  • 曲线上等距的点,
  • 沿着等弦曲线分布的点,
  • 与曲线上另一点保持一定距离的点。

对应三种方法: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
喜欢就支持一下吧
点赞213 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容