public static boolean addOne(Vertex p) { boolean visible = false; // mark from p visible faces QueueElement<Face> wf = ConvexHull.faces.getFirst(); while (wf.getNext() != null) { Face f = wf.getElem(); if (volume(f, p) < 0) { f.visible = true; visible = true; } wf = wf.getNext(); } // no faces visible, p is inside of hull if (!visible) { p.onhull = false; return false; } QueueElement<Edge> we = ConvexHull.edges.getFirst(); while (we.getNext() != null) { Edge e = we.getElem(); if (e.getAdjface(0).visible && e.getAdjface(1).visible) { e.deleted = true; } else { if (e.getAdjface(0).visible || e.getAdjface(1).visible) { e.newface = makeStructs(e, p); } } we = we.getNext(); } return true; }