Open CASCADE学习|Geom2d_BezierCurve 类
概述
Open CASCADE 提供了几何建模的强大工具集,其中 Geom2d_BezierCurve
类用于表示二维贝塞尔曲线。贝塞尔曲线在计算机图形学和计算机辅助设计(CAD)中具有广泛应用,本文将详细介绍 Geom2d_BezierCurve
类及其使用方法。
贝塞尔曲线简介
贝塞尔曲线是一种参数曲线,广泛应用于计算机图形学和相关领域。它由一组控制点定义,具有以下特点:
- 曲线的起始点和终点分别由第一个和最后一个控制点确定。
- 曲线的形状由中间的控制点控制。
- 贝塞尔曲线可以是有理的(带权重)或非有理的。
Geom2d_BezierCurve 类详解
基本概念
- 非有理贝塞尔曲线:由一组控制点(也称为极点)定义。
- 有理贝塞尔曲线:由一组带权重的控制点定义。如果所有权重相同,则曲线被视为非有理的。
- 次数:贝塞尔曲线的次数等于控制点的数量减去 1,并且不能超过系统定义的最大值(通常为 25)。
类的构造
#include <Geom2d_BezierCurve.hxx>// 创建非有理贝塞尔曲线
Geom2d_BezierCurve(const TColgp_Array1OfPnt2d &CurvePoles);// 创建有理贝塞尔曲线
Geom2d_BezierCurve(const TColgp_Array1OfPnt2d &CurvePoles, const TColStd_Array1OfReal &PoleWeights);
关键成员函数
曲线属性
Standard_Boolean IsClosed() const;
Standard_Boolean IsRational() const;
Standard_Integer Degree() const;
Standard_Integer NbPoles() const;
控制点操作
void SetPole(const Standard_Integer Index, const gp_Pnt2d &P);
void SetPole(const Standard_Integer Index, const gp_Pnt2d &P, const Standard_Real Weight);
void InsertPoleAfter(const Standard_Integer Index, const gp_Pnt2d &P, const Standard_Real Weight = 1.0);
void RemovePole(const Standard_Integer Index);
权重操作
void SetWeight(const Standard_Integer Index, const Standard_Real Weight);
Standard_Real Weight(const Standard_Integer Index) const;
曲线求导和点计算
void D0(const Standard_Real U, gp_Pnt2d &P) const;
void D1(const Standard_Real U, gp_Pnt2d &P, gp_Vec2d &V1) const;
void D2(const Standard_Real U, gp_Pnt2d &P, gp_Vec2d &V1, gp_Vec2d &V2) const;
void D3(const Standard_Real U, gp_Pnt2d &P, gp_Vec2d &V1