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; }
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)); }
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; } } }