BIMHome v1.0.0
BIMHome接口文档说明
NURBSCurve2D.h
浏览该文件的文档.
1/************************************************************************
2* @file NURBSCurve2D.h
3*
4* @brief B样条曲线
5*
6* @details B样条曲线
7*
8* @author lirf
9*
10* @version 1.0
11*
12* @date 2025-6-9
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_NURBSCURVE2D_H
19#define BIMHOMEBASE_NURBSCURVE2D_H
20
21#include "Base/Math/Geometry/Curve2D.h"
22#include "Base/Math/Geometry/BSplineCurve2D.h"
23namespace Base
24{
25 //B样条曲线
26 class BaseExport NURBSCurve2D :public BSplineCurve2D
27 {
28 public:
31
41 NURBSCurve2D(const std::vector<Base::Vector2d>& Poles,
42 const std::vector<double>& Knots,
43 const std::vector<int>& Multiplicities,
44 const int Degree,
45 const bool Periodic = false);
46
58 NURBSCurve2D(const std::vector<Base::Vector2d>& Poles,
59 const std::vector<double>& Weights,
60 const std::vector<double>& Knots,
61 const std::vector<int>& Multiplicities,
62 const int Degree,
63 const bool Periodic = false,
64 const bool CheckRational = true);
65
66 virtual Geometry2D* copy(void) const;
67
72 std::vector<Base::Vector2d>& getPoles();
73
79 void setPoles(const std::vector<Base::Vector2d>& poles);
80
85 int getDegree() const;
86
92 void setDegree(int degree);
93
98 std::vector<double>& getWeights() ;
99
105 void setWeights(const std::vector<double>& weights);
106
111 std::vector<int>& getMultiplicities() ;
112
118 void setMultiplicities(const std::vector<int>& multiplicities);
119
124 bool getPeriodic() const;
125
131 void setPeriodic(bool periodic);
132
137 bool getRational() const;
138
144 void setRational(bool rational);
145
146 bool isClosed();
147 double getLength()const;
148
149 private:
150 std::vector<double> mWeights; // 权值
151 };
152}
153
154#endif
Definition BSplineCurve2D.h:27
Definition Geometry2D.h:72
void setDegree(int degree)
设置阶数
std::vector< int > & getMultiplicities()
获取重数
int getDegree() const
获取阶数
bool getPeriodic() const
获取是否为周期性曲线
void setPoles(const std::vector< Base::Vector2d > &poles)
设置构造点
NURBSCurve2D(const std::vector< Base::Vector2d > &Poles, const std::vector< double > &Weights, const std::vector< double > &Knots, const std::vector< int > &Multiplicities, const int Degree, const bool Periodic=false, const bool CheckRational=true)
构造有理B样条曲线
void setRational(bool rational)
设置是否为有理性曲线
bool getRational() const
获取是否为有理性曲线
std::vector< double > & getWeights()
获取权值
bool isClosed()
判断是否闭合
NURBSCurve2D(const std::vector< Base::Vector2d > &Poles, const std::vector< double > &Knots, const std::vector< int > &Multiplicities, const int Degree, const bool Periodic=false)
构造B样条曲线
virtual Geometry2D * copy(void) const
void setPeriodic(bool periodic)
设置是否为周期性曲线
std::vector< Base::Vector2d > & getPoles()
获取构造点
double getLength() const
获取长度
void setWeights(const std::vector< double > &weights)
设置权值
void setMultiplicities(const std::vector< int > &multiplicities)
设置重数
std::vector< double > mWeights
Definition NURBSCurve2D.h:150
Definition NURBSCurve2D.h:27
Definition BaseFigureFactory.h:24