본문 바로가기
3D Algorithm

3차원 점 직선 투영(Point Line Projection) 방법1

by DarkRock 2023. 10. 13.
반응형

3차원에서 lineP를 지나고 백터가 lineDir인 직선에 점 p를 수직으로 투영하는 문제입니다.

여러 가지 방법이 있겠지만, 간단하게 하려면 점 p를 투영하기 위한 위 그림의 빨간색의 백터와 길이를 구하면 될 것으로 보입니다.

백터와 길이를 구하게 된다면 p + distance*vector로 투영 점의 위치를 구할 수 있습니다.

 

우선 아래 그림의 Dist는 내적을 이용하여 구할 수 있습니다. 

Dist = (lineP-P) • lineDir                      • : 내적

 

 

Dist를 구하면 p를 p'위치로 이동할 수 있고 linep-p'를 이용해서 vector를 구할 수 있습니다.

그리고 linep와 p'의 거리를 구하게 되면 투영에 필요한 distance도 구할 수 있습니다.

p' = p + Dist*lineDir

구해진 vector와 distance를 이용해서 원래 초기 점 p를 line위의 점 p'' 위치로 투영할 수 있습니다.

p'' = p + distance*vector

 

벡터의 내적을 구하는 공식을 아래글을 통해서 알수 있습니다.

2024.03.12 - [3D Algorithm] - 벡터 내적 외적 계산 공식과 결과 의미

 

벡터 내적 외적 계산 공식과 결과 의미

3차원 공간의 벡터 A = (x1, x2, x3), B = (y1, y2, y3) 가 있을 때, 내적(Inner product, Dot product)은 A⋅B = x1*y1 + x2*y2 + x3*y3 으로 계산할 수 있습니다. 코사인을 이용한 내적 계산 방식은 X의 길이와 Y의 길이 곱

darkrock.tistory.com

 

반응형