|
|
@ -7,22 +7,21 @@ Judgment of C2 or C4 intersection of NURBS curve. |
|
|
|
|
|
|
|
## 使用 |
|
|
|
```C++ |
|
|
|
C2C4 c2C4; |
|
|
|
// 按tinynurbs的使用方式配置好左右公有成员的NURBS曲面srf1、srf2的各项属性 |
|
|
|
c2C4.srf1.degree_u = 2; |
|
|
|
... |
|
|
|
c2C4.srf2.degree_u = 2; |
|
|
|
... |
|
|
|
|
|
|
|
// 检查是否配置成功 |
|
|
|
if (!surfaceIsValid(c2C4.srf1) || !surfaceIsValid(c2C4.srf2)) { |
|
|
|
// 曲面相关参数配置有误 |
|
|
|
... |
|
|
|
return -1; |
|
|
|
} |
|
|
|
// 判断C2、C4情形,res.first表示是否为C2,res.second表示为C4 |
|
|
|
pair<float, float> res = c2C4.c2OrC4(); |
|
|
|
C2C4 c2C4; |
|
|
|
// 按tinynurbs的使用方式配置好左右公有成员的NURBS曲面srf1、srf2的各项属性 |
|
|
|
c2C4.srf1.degree_u = 2; |
|
|
|
... |
|
|
|
c2C4.srf2.degree_u = 2; |
|
|
|
... |
|
|
|
|
|
|
|
// 检查是否配置成功 |
|
|
|
if (!surfaceIsValid(c2C4.srf1) || !surfaceIsValid(c2C4.srf2)) { |
|
|
|
// 曲面相关参数配置有误 |
|
|
|
... |
|
|
|
return -1; |
|
|
|
} |
|
|
|
// 判断C2、C4情形,res.first表示是否为C2,res.second表示为C4 |
|
|
|
pair<float, float> res = c2C4.c2OrC4(); |
|
|
|
``` |
|
|
|
+ C2情形:3*4的雅可比矩阵:存在一个2阶子式行列式非0+所有3阶子式行列式含0。 |
|
|
|
+ C4情形:3*4的雅可比矩阵:去掉某一列后不含0(四个有一个即可)(也就是说存在一个3阶子式的行列式不含0)。若为C4,公有成员变量c4ExcludeCols中记录着去掉哪些列后子式行列式不含0 |