Integration of gauss map, osculating toroidal patches, loop detection and C2 judgement to figure out the singular or loop intersection.
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

//
// 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