// // Created by 14727 on 2022/12/7. // #ifndef C2C4_C2C4_H #define C2C4_C2C4_H #include "../include/Range.h" #include "glm/glm.hpp" #include "srf_mesh.h" #include "tinynurbs/tinynurbs.h" #include "vector" using namespace tinynurbs; using namespace std; class C2C4 { private: // 雅可比矩阵【行】【列】<左界,右界> vector> jacobian; /** * 求range去掉某一列的三阶子行列式是否含零 * @return 若去掉某些列,三阶子行列式含零,输出去掉的列号 */ Range determinant3(int c0, int c1, int c2); Range determinant2(int l0, int l1, int c0, int c1); public: C2C4(const SrfMesh &mesh1_, const SrfMesh &mesh2_, RationalSurface srf1_, RationalSurface srf2_); const SrfMesh &mesh1; const SrfMesh &mesh2; // 在给定的mesh的最小网格上重新细分的采样数目 int reSampleCnt_u = 17; int reSampleCnt_v = 17; RationalSurface srf1; RationalSurface srf2; pair c2OrC4(int patchIdx_u1, int patchIdx_v1, int patchIdx_u2, int patchIdx_v2); vector c4ExcludeCols; }; #endif // C2C4_C2C4_H