본문 바로가기
Computation Geography

11. 점과 평면 사이의 거리

by SimonLee 2023. 9. 19.

 

점과 평면 사이의 거리를 구해보자.

 

평면의 방정식은 ax + by + cz = d 이며,

d 값을 n과 q의 내적으로 나타낼 수 있다. (링크 참조)

https://graphicsimon.tistory.com/33

 

6. 면 (Plane)

Plane을 만들수 있는 방법은 다음과 같다. 1> Point 3개로 이루어진 면 2> Point 1개와 Line 2개 3> Line 2개 Line 을 만들때 Point 2개가 필요하므로, Point 1개가 추가로 더 필요하다. 면을 기하적으로 표현하면

graphicsimon.tistory.com

 

점과 평면사이의 거리는 점에서 평면까지의 최단 거리를 구하면 된다.

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();
}