Esempio n. 1
0
bool IPhelper(Trist &tri1, int x, int y, bool readfile){
	int i,a,b,c,d, triangleIdx1, triangleIdx2, triangleIdx3;
	MyPoint pd;
	//cout<<x<<endl;cout<<y<<endl;
	x=x/scale[nowS];
	y=y/scale[nowS];
	pd.x=LongInt(x);
	pd.y=LongInt(y);
	d=myPointSet.addPoint(LongInt(x),LongInt(y));

	for (i=1;i<=tri1.noTri();i++){
		tri1.getVertexIdx(i<<3,a,b,c);
		if (myPointSet.inTri(a,b,c,pd)>0){				
			vec.push_back(d);
			if(readfile){
				tri1.delTri(i<<3);
				triangleIdx1 = tri1.makeTri(a,b,d);
				triangleIdx2 = tri1.makeTri(b,c,d);
				triangleIdx3 = tri1.makeTri(a,c,d);
				legalizeEdge(tri1,d,a,b, triangleIdx1);			
				legalizeEdge(tri1,d,b,c, triangleIdx2);
				legalizeEdge(tri1,d,a,c, triangleIdx3);
			}
			return 1;
		}
	}
	return 0;
}
Esempio n. 2
0
TEST(PointSetTest, PointSetInTriSimple) {
	PointSetArray ps;

	int p1 = ps.addPoint(0, 0);   // 1
	int p2 = ps.addPoint(0, 4);   // 2
	int p3 = ps.addPoint(4, 0);   // 3
	int p4 = ps.addPoint(4, 4);   // 4
	int p5 = ps.addPoint(1, 1);   // 5

	// (1, 1) IS in tri 123
	EXPECT_EQ(1, ps.inTri(p1, p2, p3, p5));

	// (1, 1) IS in tri 124
	EXPECT_EQ(0, ps.inTri(p1, p2, p4, p5));

	// (1, 1) IS NOT in tri 234
	EXPECT_EQ(-1, ps.inTri(p2, p3, p4, p5));
}
Esempio n. 3
0
void insert(Trist &tri1, int pIdx){
	int i,a,b,c,d, triangleIdx1, triangleIdx2, triangleIdx3;
	MyPoint pd;
	myPointSet.getPoint(pIdx,pd.x,pd.y);
	
	for (i=1;i<=tri1.noTri();i++){
		tri1.getVertexIdx(i<<3,a,b,c);
		if (myPointSet.inTri(a,b,c,pd)>0){					
			tri1.delTri(i<<3);
			triangleIdx1 = tri1.makeTri(a,b,pIdx);
			triangleIdx2 = tri1.makeTri(b,c,pIdx);
			triangleIdx3 = tri1.makeTri(a,c,pIdx);
			legalizeEdge(tri1,pIdx,a,b, triangleIdx1);			
			legalizeEdge(tri1,pIdx,b,c, triangleIdx2);
			legalizeEdge(tri1,pIdx,a,c, triangleIdx3);
			return;
		}
	}
}