private void addNewFaces(FaceList newFaces, Vertex eyeVtx, List <HalfEdge> horizon) { newFaces.clear(); HalfEdge hedgeSidePrev = null; HalfEdge hedgeSideBegin = null; for (int i = 0; i < horizon.Count; i++) { HalfEdge horizonHe = horizon[i]; HalfEdge hedgeSide = addAdjoiningFace(eyeVtx, horizonHe); if (debug) { Print("new face: " + hedgeSide.face.getVertexString()); } if (hedgeSidePrev != null) { hedgeSide.next.setOpposite(hedgeSidePrev); } else { hedgeSideBegin = hedgeSide; } newFaces.add(hedgeSide.getFace()); hedgeSidePrev = hedgeSide; } hedgeSideBegin.next.setOpposite(hedgeSidePrev); }
public void triangulate() { double minArea = 1000 * charLength * DOUBLE_PREC; newFaces.clear(); for (int i = 0; i < faces.Count; i++) { if (faces[i].mark == Face.VISIBLE) { faces[i].triangulate(newFaces, minArea); } } for (Face face = newFaces.first(); face != null; face = face.next) { faces.Add(face); } }