ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
bspline_surface.h
浏览该文件的文档.
1 #pragma once
2 #include "vde/core/point.h"
4 #include <vector>
5 
6 namespace vde::curves {
7 using core::Point3D;
8 using core::Vector3D;
9 
23 public:
38  BSplineSurface(std::vector<std::vector<Point3D>> control_grid,
39  std::vector<double> knots_u, std::vector<double> knots_v,
40  int degree_u, int degree_v);
41 
49  [[nodiscard]] Point3D evaluate(double u, double v) const;
50 
57  [[nodiscard]] Vector3D derivative_u(double u, double v) const;
58 
65  [[nodiscard]] Vector3D derivative_v(double u, double v) const;
66 
73  [[nodiscard]] Vector3D normal(double u, double v) const;
74 
79  [[nodiscard]] int degree_u() const { return degree_u_; }
80 
85  [[nodiscard]] int degree_v() const { return degree_v_; }
86 
91  [[nodiscard]] const std::vector<double>& knots_u() const { return knots_u_; }
92 
97  [[nodiscard]] const std::vector<double>& knots_v() const { return knots_v_; }
98 
99 private:
100  std::vector<std::vector<Point3D>> cp_;
101  std::vector<double> knots_u_, knots_v_;
102  int degree_u_, degree_v_;
103 };
104 
105 } // namespace vde::curves
B 样条张量积曲面(非有理)
int degree_v() const
v 向阶次
const std::vector< double > & knots_u() const
u 向节点向量
const std::vector< double > & knots_v() const
v 向节点向量
Vector3D normal(double u, double v) const
单位法向量
int degree_u() const
u 向阶次
Vector3D derivative_v(double u, double v) const
v 向偏导数 ∂S/∂v
Vector3D derivative_u(double u, double v) const
u 向偏导数 ∂S/∂u
Point3D evaluate(double u, double v) const
求曲面点 S(u,v)
BSplineSurface(std::vector< std::vector< Point3D >> control_grid, std::vector< double > knots_u, std::vector< double > knots_v, int degree_u, int degree_v)
构造 B 样条曲面
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
Definition: point.h:49
foundation::Point3D Point3D
双精度三维点(重新导出)
Definition: point.h:31