ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
bspline_curve.h
浏览该文件的文档.
1 #pragma once
2 #include "vde/core/point.h"
3 #include <vector>
4 
5 namespace vde::curves {
6 using core::Point3D;
7 using core::Vector3D;
8 
23 class BSplineCurve {
24 public:
36  BSplineCurve(std::vector<Point3D> control_points,
37  std::vector<double> knots, int degree);
38 
45  [[nodiscard]] Point3D evaluate(double t) const;
46 
57  [[nodiscard]] Vector3D derivative(double t, int order = 1) const;
58 
63  [[nodiscard]] int degree() const { return degree_; }
64 
69  [[nodiscard]] std::pair<double, double> domain() const;
70 
75  [[nodiscard]] const std::vector<Point3D>& control_points() const { return cp_; }
76 
81  [[nodiscard]] const std::vector<double>& knots() const { return knots_; }
82 
93  [[nodiscard]] int find_span(double t) const;
94 
103  [[nodiscard]] std::vector<double> basis_functions(double t, int span = -1) const;
104 
114  [[nodiscard]] std::vector<double> basis_derivatives(double t, int span = -1) const;
115 
116 private:
117  std::vector<Point3D> cp_;
118  std::vector<double> knots_;
119  int degree_;
120 };
121 
122 } // namespace vde::curves
B 样条曲线(非有理、均匀/非均匀节点)
Definition: bspline_curve.h:23
std::pair< double, double > domain() const
参数定义域
const std::vector< Point3D > & control_points() const
控制点访问
Definition: bspline_curve.h:75
std::vector< double > basis_functions(double t, int span=-1) const
在 t 处求非零基函数值
Vector3D derivative(double t, int order=1) const
在参数 t 处求导数
int degree() const
曲线阶次
Definition: bspline_curve.h:63
Point3D evaluate(double t) const
在参数 t 处求值曲线点
std::vector< double > basis_derivatives(double t, int span=-1) const
在 t 处求非零基函数的一阶导数
BSplineCurve(std::vector< Point3D > control_points, std::vector< double > knots, int degree)
构造 B 样条曲线
const std::vector< double > & knots() const
节点向量访问
Definition: bspline_curve.h:81
int find_span(double t) const
查找 t 所在的节点区间
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
Definition: point.h:49
foundation::Point3D Point3D
双精度三维点(重新导出)
Definition: point.h:31