점과 평면 사이의 거리를 구해보자.
평면의 방정식은 ax + by + cz = d 이며,
d 값을 n과 q의 내적으로 나타낼 수 있다. (링크 참조)
https://graphicsimon.tistory.com/33
점과 평면사이의 거리는 점에서 평면까지의 최단 거리를 구하면 된다.
Q점에서 평면과 수직인 직선을 그렸을때 접점 X가 생긴다면, 선분 QX를 정의 할 수 있다.
최단거리는 QX 선분의 길이이다.
먼저 평면 위에 있는 점 P를 정의합니다.
최단거리 d는 PQ의 길이 곱하기 코사인 세타로 구할수 있다.
코사인 세타값은 내적의 공식을 사용해서 정의할수 있다.
QX 벡터의 경우 평면의 노멀벡터(XQ) 의 반대방향이기 때문에 -n 이라고 표현 한 것이다.
평면의 up 벡터가 노말라이즈가 안된 벡터라면 아래 공식을 사용.
평면의 up 벡터가 노멀벡터라면 다음 공식을 사용
public float Distance(Plane p, Point3d q)
{
return Vector3f.DotProduct(p.GetNormal(), q) - p.GetD();
}
'Computation Geography' 카테고리의 다른 글
13. 평면과 평면 사이의 교차 선의 방정식 구하기 (0) | 2023.09.21 |
---|---|
12 평면과 선의 교차점 구하기 (0) | 2023.09.20 |
10. 점과 선 사이의 거리 (0) | 2023.09.15 |
9. Vector Collinear, Corplaner Check (0) | 2023.09.15 |
8. Line, Plane간 Angle 구하기 (0) | 2023.09.14 |