Beispiel #1
0
	void computeSymmetricDifference(
		CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
	) {
		CorkMesh cmIn0, cmIn1;
		corkTriMesh2CorkMesh(in0, &cmIn0);
		corkTriMesh2CorkMesh(in1, &cmIn1);
    
		cmIn0.boolXor(cmIn1);
    
		corkMesh2CorkTriMesh(&cmIn0, out);
	}
Beispiel #2
0
	void computeIntersection(
		CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
	) {
		CorkMesh cmIn0, cmIn1;
		corkTriMesh2CorkMesh(in0, &cmIn0);
		corkTriMesh2CorkMesh(in1, &cmIn1);
    
		cmIn0.boolIsct(cmIn1);
    
		corkMesh2CorkTriMesh(&cmIn0, out);
	}
Beispiel #3
0
	void computeUnion(
		CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
	) {
		CorkMesh cmIn0, cmIn1;
		corkTriMesh2CorkMesh(in0, &cmIn0);
		corkTriMesh2CorkMesh(in1, &cmIn1);
    
		cmIn0.boolUnion(cmIn1);
    
		corkMesh2CorkTriMesh(&cmIn0, out);
	}
Beispiel #4
0
void computeSecond(
    CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
) {
    CorkMesh cmIn0, cmIn1;
    corkTriMesh2CorkMesh(in0, &cmIn0);
    corkTriMesh2CorkMesh(in1, &cmIn1);
    
    cmIn1.boolFirst(cmIn0);
    
    corkMesh2CorkTriMesh(&cmIn1, out);
}
Beispiel #5
0
	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);
	}
Beispiel #6
0
	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;
	}