pythonocc进阶学习:曲线拟合(插值 Interpolation/逼近 Approximation)

2d

  • 使用插值法:在这里插入图片描述
from OCC.Core.Geom2dAPI import Geom2dAPI_Interpolate
from OCC.Core.TColgp import TColgp_HArray1OfPnt2d
from OCC.Core.gp import  gp_Pnt2d
from OCC.Display.SimpleGui import init_display

points=[]

points=TColgp_HArray1OfPnt2d(1,3)
p1=gp_Pnt2d(0,1)
p2=gp_Pnt2d(2,1)
p3=gp_Pnt2d(6,-3)

points.SetValue(1,p1)
points.SetValue(2,p2)
points.SetValue(3,p3)
interp=Geom2dAPI_Interpolate(points,False,0.0001)
interp.Perform()

display, start_display, add_menu, add_function_to_menu = init_display()

display.DisplayShape(interp.Curve(),update=True)
display.DisplayShape(p1)
display.DisplayShape(p2)
display.DisplayShape(p3)

start_display()
  • 使用逼近法Approximation:

Geom2dAPI类下的 Geom2dAPI_PointsToBSpline 可以允许建立2D BSpline曲线, 这用来逼近一系列的点。

from OCC.Core.Geom2dAPI import  Geom2dAPI_PointsToBSpline
from OCC.Core.TColgp import TColgp_Array1OfPnt2d
from OCC.Core.gp import  gp_Pnt2d
from OCC.Display.SimpleGui import init_display

points=TColgp_Array1OfPnt2d(1,3)
p1=gp_Pnt2d(0,1)
p2=gp_Pnt2d(2,1)
p3=gp_Pnt2d(6,-3)

points.SetValue(1,p1)
points.SetValue(2,p2)
points.SetValue(3,p3)
approx=Geom2dAPI_PointsToBSpline(points)


display, start_display, add_menu, add_function_to_menu = init_display()

display.DisplayShape(approx.Curve(),update=True)
display.DisplayShape(p1)
display.DisplayShape(p2)
display.DisplayShape(p3)

start_display()

3d

  • 使用插值法:Interpolation
    在这里插入图片描述
from OCC.Core.GeomAPI import GeomAPI_Interpolate
from OCC.Core.TColgp import TColgp_HArray1OfPnt
from OCC.Core.gp import gp_Pnt
from OCC.Display.SimpleGui import init_display

points=[]

points=TColgp_HArray1OfPnt(1,3)
p1=gp_Pnt(0,1,2)
p2=gp_Pnt(2,1,3)
p3=gp_Pnt(6,2,1)

points.SetValue(1,p1)
points.SetValue(2,p2)
points.SetValue(3,p3)
interp=GeomAPI_Interpolate(points,False,0.0001)
interp.Perform()

display, start_display, add_menu, add_function_to_menu = init_display()

display.DisplayShape(interp.Curve(),update=True)
display.DisplayShape(p1)
display.DisplayShape(p2)
display.DisplayShape(p3)

start_display()
  • 逼近法
    GeomAPI类下的 GeomAPI_PointsToBSpline 可以允许建立3D BSpline曲线, 这用来逼近一系列的点。
from OCC.Core.GeomAPI import GeomAPI_PointsToBSpline
from OCC.Core.TColgp import  TColgp_Array1OfPnt
from OCC.Core.gp import gp_Pnt
from OCC.Display.SimpleGui import init_display

points=TColgp_Array1OfPnt(1,3)
p1=gp_Pnt(0,1,2)
p2=gp_Pnt(2,1,3)
p3=gp_Pnt(6,2,1)

points.SetValue(1,p1)
points.SetValue(2,p2)
points.SetValue(3,p3)
approx=GeomAPI_PointsToBSpline(points)


display, start_display, add_menu, add_function_to_menu = init_display()

display.DisplayShape(approx.Curve(),update=True)
display.DisplayShape(p1)
display.DisplayShape(p2)
display.DisplayShape(p3)

start_display()
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值