BIMHome v1.0.0
BIMHome接口文档说明
BezierCurve2D.h
浏览该文件的文档.
1/************************************************************************
2* @file BezierCurve2D.h
3*
4* @brief 二维贝塞尔曲线
5*
6* @details 二维贝塞尔曲线
7*
8* @author lirf
9*
10* @version 1.0
11*
12* @date 2025-6-7
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_GEOMETRY2DBEZIERCURVE_H
19#define BIMHOMEBASE_GEOMETRY2DBEZIERCURVE_H
20
21#include "Base/Math/Geometry/Curve2D.h"
22
23namespace Base
24{
25 //贝塞尔曲线
26 class BaseExport BezierCurve2D :public Curve2D
27 {
28 public:
31
40 BezierCurve2D(const std::vector<Base::Vector2d>& Poles,
41 const std::vector<int>& Multiplicities,
42 const int Degree,
43 const bool Periodic = false);
44
54 BezierCurve2D(const std::vector<Base::Vector2d>& Poles,
55 const std::vector<int>& Multiplicities,
56 const int Degree,
57 const bool Periodic = false,
58 const bool CheckRational = true);
59
60 virtual Geometry2D* copy(void) const;
61
66 std::vector<Base::Vector2d>& getPoles();
67
73 void setPoles(const std::vector<Base::Vector2d>& poles);
74
79 int getDegree() const;
80
86 void setDegree(int degree);
87
92 std::vector<int>& getMultiplicities();
93
99 void setMultiplicities(const std::vector<int>& multiplicities);
100
105 bool getPeriodic() const;
106
112 void setPeriodic(bool periodic);
113
118 bool getRational() const;
119
125 void setRational(bool rational);
126
127 bool isClosed();
128 double getLength()const;
129
130 private:
131 std::vector<Base::Vector2d> mPoles; // 构造点
132 int mDegree; // 阶数
133 std::vector<int> mMultiplicities; // 重数
134 bool mPeriodic; // 是否周期性
135 bool mRational; // 是否有理
136
137 };
138}
139
140#endif
141
bool mPeriodic
Definition BezierCurve2D.h:134
void setDegree(int degree)
设置阶数
bool mRational
Definition BezierCurve2D.h:135
std::vector< int > & getMultiplicities()
获取重数
int getDegree() const
获取阶数
bool getPeriodic() const
获取是否为周期性曲线
BezierCurve2D(const std::vector< Base::Vector2d > &Poles, const std::vector< int > &Multiplicities, const int Degree, const bool Periodic=false)
参数化构造函数
void setPoles(const std::vector< Base::Vector2d > &poles)
设置构造点
BezierCurve2D(const std::vector< Base::Vector2d > &Poles, const std::vector< int > &Multiplicities, const int Degree, const bool Periodic=false, const bool CheckRational=true)
高级参数化构造函数
void setRational(bool rational)
设置是否有理
bool getRational() const
获取是否有理
std::vector< int > mMultiplicities
Definition BezierCurve2D.h:133
int mDegree
Definition BezierCurve2D.h:132
std::vector< Base::Vector2d > mPoles
Definition BezierCurve2D.h:131
virtual Geometry2D * copy(void) const
void setPeriodic(bool periodic)
设置是否为周期性曲线
std::vector< Base::Vector2d > & getPoles()
获取构造点
double getLength() const
获取长度
void setMultiplicities(const std::vector< int > &multiplicities)
设置重数
Definition BezierCurve2D.h:27
Definition Curve2D.h:28
Definition Geometry2D.h:72
Definition BaseFigureFactory.h:24