You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
//
|
|
// 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<vector<Range>> 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<real> srf1_, RationalSurface<real> srf2_);
|
|
|
|
const SrfMesh &mesh1;
|
|
const SrfMesh &mesh2;
|
|
|
|
// 在给定的mesh的最小网格上重新细分的采样数目
|
|
int reSampleCnt_u = 17;
|
|
int reSampleCnt_v = 17;
|
|
|
|
RationalSurface<real> srf1;
|
|
RationalSurface<real> srf2;
|
|
|
|
pair<bool, bool> c2OrC4(int patchIdx_u1, int patchIdx_v1, int patchIdx_u2,
|
|
int patchIdx_v2);
|
|
vector<int> c4ExcludeCols;
|
|
};
|
|
|
|
#endif // C2C4_C2C4_H
|
|
|