private void computeMinDistancePolygonPoint(PlanarPolygon3D polyPlane, Point point,
boolean flip) {
Coordinate pt = point.getCoordinate();
LineString shell = polyPlane.getPolygon().getExteriorRing();
if (polyPlane.intersects(pt, shell)) {
int nHole = polyPlane.getPolygon().getNumInteriorRing();
for (int i = 0; i < nHole; i++) {
LineString hole = polyPlane.getPolygon().getInteriorRingN(i);
if (polyPlane.intersects(pt, hole)) {
computeMinDistanceLinePoint(hole, point, flip);
return;
}
}
double dist = Math.abs(polyPlane.getPlane().orientedDistance(pt));
updateDistance(dist,
new GeometryLocation(polyPlane.getPolygon(), 0, pt),
new GeometryLocation(point, 0, pt),
flip
);
}
computeMinDistanceLinePoint(shell, point, flip);
}