private static Coordinate pointWithMinAngleWithSegment(Coordinate[] pts, Coordinate P, Coordinate Q) { double minAng = Double.MAX_VALUE; Coordinate minAngPt = null; for (int i = 0; i < pts.length; i++) { Coordinate p = pts[i]; if (p == P) continue; if (p == Q) continue; double ang = Angle.angleBetween(P, p, Q); if (ang < minAng) { minAng = ang; minAngPt = p; } } return minAngPt; } }