示例#1
0
文件: cork.cpp 项目: 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);
	}
示例#2
0
文件: cork.cpp 项目: 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);
	}
示例#3
0
文件: cork.cpp 项目: 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);
	}
示例#4
0
文件: cork.cpp 项目: 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);
}
示例#5
0
文件: cork.cpp 项目: 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);
	}
示例#6
0
文件: cork.cpp 项目: 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;
	}