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()

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值