/** * creates a new face in the triangulation, with the given incident vertices and adjacent * triangles. */ public TriangulationDSFace_2<X> createFace( TriangulationDSVertex_2<X> v1, TriangulationDSVertex_2<X> v2, TriangulationDSVertex_2<X> v3, TriangulationDSFace_2<X> c1, TriangulationDSFace_2<X> c2, TriangulationDSFace_2<X> c3) { TriangulationDSFace_2<X> newFace = new TriangulationDSFace_2<X>(v1, v2, v3, c1, c2, c3); for (int i = 0; i < 3; i++) { TriangulationDSFace_2<X> face = newFace.neighbors.get(i); if (face != null) { // update neighbor pointer in neighboring cell face.setNeighbor(face.index(newFace), newFace); } } this.faces.add(newFace); return newFace; }