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

Bézier 张量积曲面 更多...

#include <bezier_surface.h>

Public 成员函数

 BezierSurface (std::vector< std::vector< Point3D >> control_grid)
 构造 Bézier 曲面 更多...
 
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
 单位法向量 N(u,v) = (∂S/∂u × ∂S/∂v) / |…| 更多...
 
int degree_u () const
 u 向阶次 更多...
 
int degree_v () const
 v 向阶次 更多...
 

详细描述

Bézier 张量积曲面

由 (m+1)×(n+1) 控制点网格定义,m = degree_u,n = degree_v。 参数域 (u,v) ∈ [0,1]×[0,1],四个角点插值网格四角。

求值公式:S(u,v) = Σ_i Σ_j P_{ij} · B_i^m(u) · B_j^n(v)

在文件 bezier_surface.h19 行定义.

构造及析构函数说明

◆ BezierSurface()

vde::curves::BezierSurface::BezierSurface ( std::vector< std::vector< Point3D >>  control_grid)

构造 Bézier 曲面

参数
control_grid控制点网格,grid[i][j] 对应 u 方向第 i 个、v 方向第 j 个控制点
注解
grid 必须矩整(所有行等长);grid.size() = degree_u+1, grid[0].size() = degree_v+1
// 3x3 控制网格 → 双二次 Bézier 曲面
BezierSurface surf({{p00,p01,p02}, {p10,p11,p12}, {p20,p21,p22}});
BezierSurface(std::vector< std::vector< Point3D >> control_grid)
构造 Bézier 曲面

成员函数说明

◆ degree_u()

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

u 向阶次

返回
u 方向阶次(控制点行数 - 1)

在文件 bezier_surface.h71 行定义.

◆ degree_v()

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

v 向阶次

返回
v 方向阶次(控制点列数 - 1)

在文件 bezier_surface.h77 行定义.

◆ derivative_u()

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

u 方向偏导数 ∂S/∂u

参数
uu 参数
vv 参数
返回
u 方向切向量
注解
通过降阶 Bézier 曲线计算:对 v 求值后沿 u 求导

◆ derivative_v()

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

v 方向偏导数 ∂S/∂v

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

◆ evaluate()

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

求曲面点 S(u,v)

参数
uu 参数,范围 [0, 1]
vv 参数,范围 [0, 1]
返回
曲面上对应 (u,v) 的 3D 坐标
注解
张量积求值:先按 v 方向对每行做 de Casteljau,再沿 u 方向对结果做一次

◆ normal()

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

单位法向量 N(u,v) = (∂S/∂u × ∂S/∂v) / |…|

参数
uu 参数
vv 参数
返回
归一化法向量(指向曲面的特选侧)
注解
当两个偏导数平行时返回零向量(奇异点)

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