void computeSymmetricDifference( CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out ) { CorkMesh cmIn0, cmIn1; corkTriMesh2CorkMesh(in0, &cmIn0); corkTriMesh2CorkMesh(in1, &cmIn1); cmIn0.boolXor(cmIn1); corkMesh2CorkTriMesh(&cmIn0, out); }
void computeIntersection( CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out ) { CorkMesh cmIn0, cmIn1; corkTriMesh2CorkMesh(in0, &cmIn0); corkTriMesh2CorkMesh(in1, &cmIn1); cmIn0.boolIsct(cmIn1); corkMesh2CorkTriMesh(&cmIn0, out); }
void computeUnion( CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out ) { CorkMesh cmIn0, cmIn1; corkTriMesh2CorkMesh(in0, &cmIn0); corkTriMesh2CorkMesh(in1, &cmIn1); cmIn0.boolUnion(cmIn1); corkMesh2CorkTriMesh(&cmIn0, out); }
void computeSecond( CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out ) { CorkMesh cmIn0, cmIn1; corkTriMesh2CorkMesh(in0, &cmIn0); corkTriMesh2CorkMesh(in1, &cmIn1); cmIn1.boolFirst(cmIn0); corkMesh2CorkTriMesh(&cmIn1, out); }
void resolveIntersections( CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out ) { CorkMesh cmIn0, cmIn1; corkTriMesh2CorkMesh(in0, &cmIn0); corkTriMesh2CorkMesh(in1, &cmIn1); cmIn0.disjointUnion(cmIn1); cmIn0.resolveIntersections(); corkMesh2CorkTriMesh(&cmIn0, out); }
bool isSolid(CorkTriMesh cmesh) { CorkMesh mesh; corkTriMesh2CorkMesh(cmesh, &mesh); bool solid = true; if(mesh.isSelfIntersecting()) { CORK_ERROR("isSolid() was given a self-intersecting mesh"); solid = false; } if(!mesh.isClosed()) { CORK_ERROR("isSolid() was given a non-closed mesh"); solid = false; } return solid; }