RsFillHoleByNurbs_AppendSurfaceEdge
RsFillHoleByNurbs_AppendSurfaceEdge
增加一条曲面边界曲线 (surface edge) 作为边界线。曲面边界曲线 (surface edge) 是指落在曲面上的曲线,这条曲线由一条曲面的 2D 参数空间上的二维曲线定义 。 如下图中的蓝色曲线。

接口定义
extern "C" __declspec(dllimport) void RsFillHoleByNurbs_AppendSurfaceEdge(double* cpu, double* cpv, double* curve_weight,
int ctrlp_num, int is_curve_rational, int degree, double* knot,int iso_type,
int continuity, int hasface, double* surf_cpx,
double* surf_cpy, double* surf_cpz, double* surf_weight,
int u_num, int v_num, int is_surf_rational, int u_degree, int v_degree, double* u_knot, double* v_knot)
接口参数
输入数据:
参数包含两个部分内容: 曲面边界曲线的数据和NURBS 曲面数据
曲面边界曲线的数据:
double* cpu : 存储曲线控制顶点的 u 向坐标 , 长度为 ctrlp_num;
double* cpv: 存储曲线控制顶点的 v 向坐标 , 长度为 ctrlp_num;
double* curve_weight: 存储曲线控制顶点的权值 , 长度为 ctrlp_num; 如果该曲线为非有理 B 样条曲线,则 curve_weight 可以为空;
int iso_type: 该曲线是否为等参数线
- -1 : 曲线是 3d 没有曲面信息;
- 0 :非等参线;.
- 1: x_iso;
- 2: y_iso;
- 3: west_iso; u=u向起始点
- 4: south_iso; v=v向起始点
- 5: east_iso; u=u向终止点
- 6: north_iso; v=v向终止点
int continuity: 新曲面在该曲线上的连续性 , 0: G0; 1: G1;
int hasface: 该值总是为 1;
NURBS 曲面数据 :
double* surf_cpx: 曲面控制点的 x 分量坐标,长度为 u_num*v_num ,沿 v 方向排列;
double* surf_cpy: 曲面控制点的 y 分量坐标,长度为 u_num*v_num ,沿 v 方向排列;
double* surf_cpz: 曲面控制点的 z 分量坐标,长度为 u_num*v_num ,沿 v 方向排列;
double* surf_weight: 曲面控制点上的权值,长度为 u_num*v_num ,沿 v 方向排列;如果该曲面是非有理 B 样条曲面 , 该值可以为空 ;
int u_num : 曲面在 U 方向的控制点数目;
int v_num: 曲面在 V 方向的控制点数目;
int is_surf_rational: 曲面是否为有理 NURBS 曲面。 0 代表非有理 B 样条曲面 ; 1 代表有理 NURBS 曲面;
int u_degree: 曲面在 U 方向的次数;
int v_degree: 曲面在 V 方向的次数;
double* u_knot: 曲面在 U 方向的节点向量,长度为 u_num+u_degree+1
double* v_knot: 曲面在 V 方向的节点向量,长度为 v_num+v_degree+1
返回值
无返回值