ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
vde::curves::BSplineSurface类 参考

B 样条张量积曲面(非有理) 更多...

#include <bspline_surface.h>

Public 成员函数

 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 样条曲面 更多...
 
Point3D evaluate (double u, double v) const
 求曲面点 S(u,v) 更多...
 
Vector3D derivative_u (double u, double v) const
 u 向偏导数 ∂S/∂u 更多...
 
Vector3D derivative_v (double u, double v) const
 v 向偏导数 ∂S/∂v 更多...
 
Vector3D normal (double u, double v) const
 单位法向量 更多...
 
int degree_u () const
 u 向阶次 更多...
 
int degree_v () const
 v 向阶次 更多...
 
const std::vector< double > & knots_u () const
 u 向节点向量 更多...
 
const std::vector< double > & knots_v () const
 v 向节点向量 更多...
 

详细描述

B 样条张量积曲面(非有理)

由 (nu+1)×(nv+1) 控制点网格、u/v 向各一个节点向量以及两个阶次定义。 参数域 (u,v) ∈ [knots_u[pu], knots_u[nu+1]] × [knots_v[pv], knots_v[nv+1]]。

求值公式:S(u,v) = Σ_i Σ_j P_{ij} · N_{i,pu}(u) · N_{j,pv}(v)

具有局部控制性:修改单个控制点仅影响相邻 pu×pv 个节点区间的曲面区域。

在文件 bspline_surface.h22 行定义.

构造及析构函数说明

◆ BSplineSurface()

vde::curves::BSplineSurface::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 样条曲面

参数
control_grid(nu+1)×(nv+1) 控制点网格
knots_uu 向节点向量,长度 = nu + pu + 1
knots_vv 向节点向量,长度 = nv + pv + 1
degree_uu 向阶次 pu
degree_vv 向阶次 pv
BSplineSurface surf(grid,
{0,0,0,0, 0.5, 1,1,1,1}, // u knots (三次,5 个控制点)
{0,0,0, 0.5, 1,1,1}, // v knots (二次,4 个控制点)
3, 2);
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 样条曲面

成员函数说明

◆ degree_u()

int vde::curves::BSplineSurface::degree_u ( ) const
inline

u 向阶次

返回
pu

在文件 bspline_surface.h79 行定义.

◆ degree_v()

int vde::curves::BSplineSurface::degree_v ( ) const
inline

v 向阶次

返回
pv

在文件 bspline_surface.h85 行定义.

◆ derivative_u()

Vector3D vde::curves::BSplineSurface::derivative_u ( double  u,
double  v 
) const

u 向偏导数 ∂S/∂u

参数
uu 参数
vv 参数
返回
u 向切向量

◆ derivative_v()

Vector3D vde::curves::BSplineSurface::derivative_v ( double  u,
double  v 
) const

v 向偏导数 ∂S/∂v

参数
uu 参数
vv 参数
返回
v 向切向量

◆ evaluate()

Point3D vde::curves::BSplineSurface::evaluate ( double  u,
double  v 
) const

求曲面点 S(u,v)

参数
uu 参数
vv 参数
返回
曲面上的 3D 点
注解
张量积分解:先行后列(或先列后行)做两次 B 样条求值

◆ knots_u()

const std::vector<double>& vde::curves::BSplineSurface::knots_u ( ) const
inline

u 向节点向量

返回
只读引用

在文件 bspline_surface.h91 行定义.

◆ knots_v()

const std::vector<double>& vde::curves::BSplineSurface::knots_v ( ) const
inline

v 向节点向量

返回
只读引用

在文件 bspline_surface.h97 行定义.

◆ normal()

Vector3D vde::curves::BSplineSurface::normal ( double  u,
double  v 
) const

单位法向量

参数
uu 参数
vv 参数
返回
N(u,v) = (∂S/∂u × ∂S/∂v) / |…|

该类的文档由以下文件生成: