private void startTriangulation(Point p1, Point p2) { Point ps, pb; if (p1.isLess(p2)) { ps = p1; pb = p2; } else { ps = p2; pb = p1; } firstT = new Triangle(pb, ps); lastT = firstT; Triangle t = new Triangle(ps, pb); firstT.setAbTriangle(t); t.setAbTriangle(firstT); firstT.setBcTriangle(t); t.setCanext(firstT); firstT.setCanext(t); t.setBcTriangle(firstT); firstP = firstT.getB(); lastP = lastT.getA(); startTriangleHull = firstT; }
private Triangle extendcounterclock(Triangle t, Point p) { t.setHalfplane(false); t.setC(p); t.circumcircle(); Triangle tca = t.getCaTriangle(); if (p.pointLineTest(tca.getA(), tca.getB()) >= Point.RIGHT) { Triangle nT = new Triangle(t.getA(), p); nT.setAbTriangle(t); t.setCanext(nT); nT.setCanext(tca); tca.setBcTriangle(nT); return nT; } return extendcounterclock(tca, p); }
tp.setAbTriangle(t); t.setBcTriangle(tp); tp.setCanext(t); t.setCanext(firstT); firstT.setBcTriangle(t); tp.setBcTriangle(firstT.getAbTriangle()); firstT.getAbTriangle().setCanext(tp); firstT = t; firstP = p; tp.setAbTriangle(t); t.setBcTriangle(lastT); lastT.setCanext(t); t.setCanext(tp); tp.setBcTriangle(t); tp.setCanext(lastT.getAbTriangle()); lastT.getAbTriangle().setBcTriangle(tp); lastT = t; tp.setAbTriangle(t); t.setBcTriangle(u.getBcTriangle()); u.getBcTriangle().setCanext(t); t.setCanext(u); u.setBcTriangle(t); tp.setCanext(u.getAbTriangle().getCaTriangle()); u.getAbTriangle().getCaTriangle().setBcTriangle(tp); tp.setBcTriangle(u.getAbTriangle()); u.getAbTriangle().setCanext(tp); if (firstT == u) {
private Triangle extendOutside(Triangle t, Point p) { if (p.pointLineTest(t.getA(), t.getB()) == Point.ONSEGMENT) { Triangle dg = new Triangle(t.getA(), t.getB(), p); Triangle hp = new Triangle(p, t.getB()); t.setB(p); dg.setAbTriangle(t.getAbTriangle()); dg.getAbTriangle().switchneighbors(t, dg); dg.setBcTriangle(hp); hp.setAbTriangle(dg); dg.setCanext(t); t.setAbTriangle(dg); hp.setBcTriangle(t.getBcTriangle()); hp.getBcTriangle().setCanext(hp); hp.setCanext(t); t.setBcTriangle(hp); return dg; } Triangle ccT = extendcounterclock(t, p); Triangle cT = extendclock(t, p); ccT.setBcTriangle(cT); cT.setCanext(ccT); startTriangleHull = cT; return cT.getAbTriangle(); }
private Triangle extendInside(Triangle t, Point p) { Triangle h1, h2; h1 = treatDegeneracyInside(t, p); if (h1 != null) return h1; h1 = new Triangle(t.getC(), t.getA(), p); h2 = new Triangle(t.getB(), t.getC(), p); t.setC(p); t.circumcircle(); h1.setAbTriangle(t.getCaTriangle()); h1.setBcTriangle(t); h1.setCanext(h2); h2.setAbTriangle(t.getBcTriangle()); h2.setBcTriangle(h1); h2.setCanext(t); h1.getAbTriangle().switchneighbors(t, h1); h2.getAbTriangle().switchneighbors(t, h2); t.setBcTriangle(h2); t.setCanext(h1); return t; }
addedTriangle2.setCanext(addedTriangle1); addedTriangle1.setCanext(addedTriangle2); addedTriangle2.setAbTriangle(addedTriangle1); addedTriangle1.setCanext(addedTriangle2); addedTriangle2.setCanext(addedTriangle1); addedTriangle1.setCanext(addedTriangle2); addedTriangle2.setAbTriangle(addedTriangle1); addedTriangle1.setCanext(addedTriangle2); addedTriangle2.setBcTriangle(addedTriangle1); addedTriangle2.setCanext(addedTriangle1); addedTriangle1.setCanext(addedTriangle2); addedTriangle2.setCanext(addedTriangle1); addedTriangle1.setCanext(addedTriangle2); addedTriangle2.setBcTriangle(addedTriangle1); addedTriangle2.setCanext(addedTriangle1); addedTriangle2.setCanext(addedTriangle1); addedTriangle2.setCanext(addedTriangle1); addedTriangle2.setCanext(addedTriangle1);
private Triangle extendclock(Triangle t, Point p) { t.setHalfplane(false); t.setC(p); t.circumcircle(); Triangle tbc = t.getBcTriangle(); if (p.pointLineTest(tbc.getA(), tbc.getB()) >= Point.RIGHT) { Triangle nT = new Triangle(p, t.getB()); nT.setAbTriangle(t); t.setBcTriangle(nT); nT.setBcTriangle(tbc); tbc.setCanext(nT); return nT; } return extendclock(tbc, p); }
v.getBcTriangle().switchneighbors(t, v); t.setBcTriangle(v); v.setCanext(t); t.setB(v.getA()); t.getAbTriangle().switchneighbors(u, t);