40 std::vector<std::vector<double>>
weights,
79 [[nodiscard]]
int degree_u()
const {
return degree_u_; }
85 [[nodiscard]]
int degree_v()
const {
return degree_v_; }
92 return {
static_cast<int>(cp_.size()),
static_cast<int>(cp_.empty()?0:cp_[0].size())};
99 [[nodiscard]]
const std::vector<double>&
knots_u()
const {
return knots_u_; }
105 [[nodiscard]]
const std::vector<double>&
knots_v()
const {
return knots_v_; }
111 [[nodiscard]]
const std::vector<std::vector<Point3D>>&
control_points()
const {
return cp_; }
117 [[nodiscard]]
const std::vector<std::vector<double>>&
weights()
const {
return weights_; }
142 const Vector3D& axis_dir,
double angle_rad);
152 [[nodiscard]] std::pair<std::vector<Point3D>, std::vector<std::array<int,3>>>
156 std::vector<std::vector<Point3D>> cp_;
157 std::vector<double> knots_u_, knots_v_;
158 std::vector<std::vector<double>> weights_;
159 int degree_u_, degree_v_;
NURBS 曲线(Non-Uniform Rational B-Spline)
Vector3D normal(double u, double v) const
单位法向量
int degree_u() const
u 向阶次
const std::vector< double > & knots_v() const
v 向节点向量
Point3D evaluate(double u, double v) const
求曲面点 S(u,v)
const std::vector< std::vector< double > > & weights() const
权重网格访问
Vector3D derivative_u(double u, double v) const
u 向偏导数
static NurbsSurface revolve(const NurbsCurve &profile, const Point3D &axis_origin, const Vector3D &axis_dir, double angle_rad)
由截面曲线旋转生成旋转曲面
int degree_v() const
v 向阶次
const std::vector< double > & knots_u() const
u 向节点向量
const std::vector< std::vector< Point3D > > & control_points() const
控制点网格访问
std::pair< std::vector< Point3D >, std::vector< std::array< int, 3 > > > tessellate(int res_u, int res_v) const
将 NURBS 曲面三角化
NurbsSurface(std::vector< std::vector< Point3D >> control_grid, std::vector< double > knots_u, std::vector< double > knots_v, std::vector< std::vector< double >> weights, int degree_u, int degree_v)
构造 NURBS 曲面
std::array< int, 2 > num_control_points() const
控制点数量
static NurbsSurface ruled(const NurbsCurve &c1, const NurbsCurve &c2)
由两条 NURBS 曲线创建直纹面
Vector3D derivative_v(double u, double v) const
v 向偏导数
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
foundation::Point3D Point3D
双精度三维点(重新导出)