|
ViewDesignEngine
3.1.0
高性能 CAD 计算几何引擎
|
NURBS 张量积曲面 更多...
#include <nurbs_surface.h>
Public 成员函数 | |
| 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 曲面 更多... | |
| Point3D | evaluate (double u, double v) const |
| 求曲面点 S(u,v) 更多... | |
| Vector3D | derivative_u (double u, double v) const |
| u 向偏导数 更多... | |
| Vector3D | derivative_v (double u, double v) const |
| v 向偏导数 更多... | |
| Vector3D | normal (double u, double v) const |
| 单位法向量 更多... | |
| int | degree_u () const |
| u 向阶次 更多... | |
| int | degree_v () const |
| v 向阶次 更多... | |
| std::array< int, 2 > | num_control_points () const |
| 控制点数量 更多... | |
| const std::vector< double > & | knots_u () const |
| u 向节点向量 更多... | |
| const std::vector< double > & | knots_v () const |
| v 向节点向量 更多... | |
| const std::vector< std::vector< Point3D > > & | control_points () const |
| 控制点网格访问 更多... | |
| const std::vector< std::vector< double > > & | weights () const |
| 权重网格访问 更多... | |
| std::pair< std::vector< Point3D >, std::vector< std::array< int, 3 > > > | tessellate (int res_u, int res_v) const |
| 将 NURBS 曲面三角化 更多... | |
静态 Public 成员函数 | |
| static NurbsSurface | ruled (const NurbsCurve &c1, const NurbsCurve &c2) |
| 由两条 NURBS 曲线创建直纹面 更多... | |
| static NurbsSurface | revolve (const NurbsCurve &profile, const Point3D &axis_origin, const Vector3D &axis_dir, double angle_rad) |
| 由截面曲线旋转生成旋转曲面 更多... | |
NURBS 张量积曲面
由 (nu+1)×(nv+1) 控制点网格、权重网格、u/v 节点向量及阶次定义。 求值公式: S(u,v) = Σ_i Σ_j N_{i,pu}(u)·N_{j,pv}(v)·w_{ij}·P_{ij} / Σ_i Σ_j N_{i,pu}(u)·N_{j,pv}(v)·w_{ij}
可精确表示球面、圆柱面、锥面等二次曲面。广泛应用于 CAD 数据交换。
在文件 nurbs_surface.h 第 24 行定义.
| vde::curves::NurbsSurface::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 曲面
| control_grid | 控制点网格 |
| knots_u | u 向节点向量 |
| knots_v | v 向节点向量 |
| weights | 权重网格,维度与 control_grid 一致,所有值 > 0 |
| degree_u | u 向阶次 |
| degree_v | v 向阶次 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 曲面 |
|
inline |
|
inline |
|
inline |
| Vector3D vde::curves::NurbsSurface::derivative_u | ( | double | u, |
| double | v | ||
| ) | const |
u 向偏导数
| u | u 参数 |
| v | v 参数 |
| Vector3D vde::curves::NurbsSurface::derivative_v | ( | double | u, |
| double | v | ||
| ) | const |
v 向偏导数
| u | u 参数 |
| v | v 参数 |
| Point3D vde::curves::NurbsSurface::evaluate | ( | double | u, |
| double | v | ||
| ) | const |
求曲面点 S(u,v)
| u | u 参数 |
| v | v 参数 |
|
inline |
|
inline |
| Vector3D vde::curves::NurbsSurface::normal | ( | double | u, |
| double | v | ||
| ) | const |
单位法向量
| u | u 参数 |
| v | v 参数 |
|
inline |
|
static |
由截面曲线旋转生成旋转曲面
| profile | 截面 NURBS 曲线 |
| axis_origin | 旋转轴上一点 |
| axis_dir | 旋转轴方向 |
| angle_rad | 旋转角度(弧度),≤ 2π |
|
static |
由两条 NURBS 曲线创建直纹面
| c1 | 起始曲线(v=0 边界) |
| c2 | 终止曲线(v=1 边界) |
| std::pair<std::vector<Point3D>, std::vector<std::array<int,3> > > vde::curves::NurbsSurface::tessellate | ( | int | res_u, |
| int | res_v | ||
| ) | const |
将 NURBS 曲面三角化
| res_u | u 方向采样分辨率 |
| res_v | v 方向采样分辨率 |
|
inline |