private void deleteUpdate(Point pointToDelete) { for (Triangle addedTriangle1 : addedTriangles) { // update between addedd triangles and deleted triangles for (Triangle deletedTriangle : deletedTriangles) { if (shareSegment(addedTriangle1, deletedTriangle)) { updateNeighbor(addedTriangle1, deletedTriangle, pointToDelete); } } } for (Triangle addedTriangle1 : addedTriangles) { // update between added triangles for (Triangle addedTriangle2 : addedTriangles) { if ((addedTriangle1 != addedTriangle2) && (shareSegment(addedTriangle1, addedTriangle2))) { updateNeighbor(addedTriangle1, addedTriangle2); } } } // Update index with changed triangles if (gridIndex != null) gridIndex.updateIndex(addedTriangles.iterator()); }
/** * insert the point to this Delaunay Triangulation. Note: if p is null or * already exist in this triangulation p is ignored. * * @param p * new vertex to be inserted the triangulation. */ public void insertPoint(Point p) { if (vertices.contains(p)) return; modCount++; updateBoundingBox(p); vertices.add(p); Triangle t = insertPointSimple(p); if (t == null) // return; Triangle tt = t; currT = t; // recall the last point for - fast (last) update iterator. do { flip(tt, modCount); tt = tt.getCaTriangle(); } while (tt != t && !tt.isHalfplane()); // Update index with changed triangles if (gridIndex != null) gridIndex.updateIndex(getLastUpdatedTriangles()); }