Exemplo n.º 1
0
Arquivo: cork.cpp Projeto: dacolj/cork
	void computeSymmetricDifference(
		CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
	) {
		CorkMesh cmIn0, cmIn1;
		corkTriMesh2CorkMesh(in0, &cmIn0);
		corkTriMesh2CorkMesh(in1, &cmIn1);
    
		cmIn0.boolXor(cmIn1);
    
		corkMesh2CorkTriMesh(&cmIn0, out);
	}
Exemplo n.º 2
0
Arquivo: cork.cpp Projeto: dacolj/cork
	void computeIntersection(
		CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
	) {
		CorkMesh cmIn0, cmIn1;
		corkTriMesh2CorkMesh(in0, &cmIn0);
		corkTriMesh2CorkMesh(in1, &cmIn1);
    
		cmIn0.boolIsct(cmIn1);
    
		corkMesh2CorkTriMesh(&cmIn0, out);
	}
Exemplo n.º 3
0
Arquivo: cork.cpp Projeto: dacolj/cork
	void computeUnion(
		CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
	) {
		CorkMesh cmIn0, cmIn1;
		corkTriMesh2CorkMesh(in0, &cmIn0);
		corkTriMesh2CorkMesh(in1, &cmIn1);
    
		cmIn0.boolUnion(cmIn1);
    
		corkMesh2CorkTriMesh(&cmIn0, out);
	}
Exemplo n.º 4
0
Arquivo: cork.cpp Projeto: fangq/cork
void computeSecond(
    CorkTriMesh in0, CorkTriMesh in1, CorkTriMesh *out
) {
    CorkMesh cmIn0, cmIn1;
    corkTriMesh2CorkMesh(in0, &cmIn0);
    corkTriMesh2CorkMesh(in1, &cmIn1);
    
    cmIn1.boolFirst(cmIn0);
    
    corkMesh2CorkTriMesh(&cmIn1, out);
}
Exemplo n.º 5
0
Arquivo: cork.cpp Projeto: dacolj/cork
	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);
	}
Exemplo n.º 6
0
Arquivo: cork.cpp Projeto: dacolj/cork
	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;
	}