BIMHome v1.0.0
BIMHome接口文档说明
BSplineCurve.h
浏览该文件的文档.
1/************************************************************************
2* @file BSplineCurve.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_GEOMETRYBSPLINECURVE_H
19#define BIMHOMEBASE_GEOMETRYBSPLINECURVE_H
20
21#include "Base/Math/Geometry/Curve.h"
22
23namespace Base
24{
25 //B样条曲线
26 class BaseExport BSplineCurve :public Curve
27 {
28 public:
31
40 BSplineCurve(const std::vector<Base::Vector3d>& Poles,
41 const std::vector<int>& Multiplicities,
42 const int Degree,
43 const bool Periodic = false);
44
55 BSplineCurve(const std::vector<Base::Vector3d>& Poles,
56 const std::vector<double>& Weights,
57 const std::vector<int>& Multiplicities,
58 const int Degree,
59 const bool Periodic = false,
60 const bool CheckRational = true);
61
62 virtual Geometry* copy(void) const;
63
68 std::vector<Base::Vector3d>& getPoles();
69
75 void setPoles(const std::vector<Base::Vector3d>& poles);
76
82 int getDegree() const;
83
89 void setDegree(int degree);
90
96 std::vector<int>& getMultiplicities() ;
97
103 void setMultiplicities(const std::vector<int>& multiplicities);
104
110 std::vector<double>& getKnots();
111
117 void setKnots(const std::vector<double>& knots);
118
124 bool getPeriodic() const;
125
131 void setPeriodic(bool periodic);
132
138 bool getRational() const;
139
145 void setRational(bool rational);
146
147 bool isClosed();
148 double getLength()const;
149
150 void Reverse();
151
152 public:
153 std::vector<Base::Vector3d> mPoles; // 构造点
154 int mDegree; // 阶数
155 std::vector<double> mKnots; // 节点向量
156 std::vector<int> mMultiplicities; // 重数
157 bool mPeriodic; // 是否周期性
158 bool mRational; // 是否有理
159 };
160}
161
162#endif
bool mPeriodic
Definition BSplineCurve.h:157
void setDegree(int degree)
设置阶数
bool mRational
Definition BSplineCurve.h:158
std::vector< int > & getMultiplicities()
获取重数
int getDegree() const
获取阶数
bool getPeriodic() const
获取是否周期性
BSplineCurve(const std::vector< Base::Vector3d > &Poles, const std::vector< int > &Multiplicities, const int Degree, const bool Periodic=false)
构建3D B样条曲线
void setKnots(const std::vector< double > &knots)
设置节点
void setPoles(const std::vector< Base::Vector3d > &poles)
设置构造点
virtual Geometry * copy(void) const
void setRational(bool rational)
设置是否有理
bool getRational() const
获取是否有理
std::vector< Base::Vector3d > & getPoles()
获取构造点
std::vector< int > mMultiplicities
Definition BSplineCurve.h:156
int mDegree
Definition BSplineCurve.h:154
std::vector< Base::Vector3d > mPoles
Definition BSplineCurve.h:153
std::vector< double > & getKnots()
获取节点
void setPeriodic(bool periodic)
设置是否周期性
std::vector< double > mKnots
Definition BSplineCurve.h:155
double getLength() const
BSplineCurve(const std::vector< Base::Vector3d > &Poles, const std::vector< double > &Weights, const std::vector< int > &Multiplicities, const int Degree, const bool Periodic=false, const bool CheckRational=true)
构建有理 B样条曲线
void setMultiplicities(const std::vector< int > &multiplicities)
设置重数
Definition BSplineCurve.h:27
Definition Curve.h:27
Definition Geometry.h:81
Definition BaseFigureFactory.h:24