-
점 p와 선분 l 사이의 최소 거리를 구하는 알고리즘
- 선분 위에 최소 거리가 되는 점이 존재한다면 직선에서의 문제와 같지만
- 선분의 한 끝점까지의 거리가 최소거리인 경우에는 예외처리가 필요하다.
-
double distToLineSegment(Point p, Point a, Point b, Point& c) { Vec ap = pointToVec(a, p), ab = pointToVec(a, b); double u = dotProduct(ap, ab) / norm_sq(ab); if (u < 0) { // 단위 벡터에 의한 비율에 따라 a에 가까운지 b에 가까운지 결정된다. c = Point(a.x, a.y); return dist(p, a); } if (u > 1) { c = Point(b.x, b.y); return dist(p, b); } c = translate(a, scale(ab, u)); return dist(p, c); }
Geometry(Shortest Distance between Point and Segment)
Feb 22, 2019