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

Bertha 。 2021-11-01 13:22 619阅读 0赞

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曲线, 这用来逼近一系列的点。

  1. from OCC.Core.Geom2dAPI import Geom2dAPI_PointsToBSpline
  2. from OCC.Core.TColgp import TColgp_Array1OfPnt2d
  3. from OCC.Core.gp import gp_Pnt2d
  4. from OCC.Display.SimpleGui import init_display
  5. points=TColgp_Array1OfPnt2d(1,3)
  6. p1=gp_Pnt2d(0,1)
  7. p2=gp_Pnt2d(2,1)
  8. p3=gp_Pnt2d(6,-3)
  9. points.SetValue(1,p1)
  10. points.SetValue(2,p2)
  11. points.SetValue(3,p3)
  12. approx=Geom2dAPI_PointsToBSpline(points)
  13. display, start_display, add_menu, add_function_to_menu = init_display()
  14. display.DisplayShape(approx.Curve(),update=True)
  15. display.DisplayShape(p1)
  16. display.DisplayShape(p2)
  17. display.DisplayShape(p3)
  18. 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)

  1. display, start_display, add_menu, add_function_to_menu = init_display()
  2. display.DisplayShape(approx.Curve(),update=True)
  3. display.DisplayShape(p1)
  4. display.DisplayShape(p2)
  5. display.DisplayShape(p3)
  6. start_display()

发表评论

表情:
评论列表 (有 0 条评论,619人围观)

还没有评论,来说两句吧...

相关阅读