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

© 版权声明
THE END
喜欢就支持一下吧
点赞52 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容