본문 바로가기
3D Algorithm

3차원 직선 계산 및 벡터 표현(개발자 관점)

by DarkRock 2023. 10. 26.
반응형

어렸을 때 배웠던 2차원 직선의 방정식은 y = ax+b 선언하여, 두 점을 이 식에 대입한 후 미지수 a, b를 구하여 직선의 방정식을 구했습니다.

 

3차원에서 직선은 다음과 같이 3가지로 표현할 수 있습니다.

 

두 점 p1과 p2를 알고 있을 때
1. 첫 번째 방법은 두 점의 차이 벡터를 이용해서 직선을 표현하는 것입니다.
차이 벡터를 dv라고 하면,
dv = p2 - p1 
이며 이 두 점 사이에 있는 점들은 
p(t) = p1 + dv*t,       0 < t < 1
이렇게 표현할 수 있습니다. t가 0이면 p1에 해당하고 t가 1이면 p2라고 보시면 됩니다.

 

2. 두 번째 방법은 차이 벡터를 사용하지 않고 t만 사용하는 직선입니다.
이 식은 
p(t) = (1-t)*p1 + t*p2,      0 < t < 1  

로 표현 할 수 있고, 마찬가지로 t가 0이면 p1에 해당하고 t가 1이면 p2가 됩니다.

 

 

3. 마지막 3번째 방법은 많이들 아시는 두 점의 벡터를 이용한 방법입니다.
두 점의 벡터는 v = p2-p1이고 v는 길이가 1이 되도록 정규화를 시켜줘야 합니다.
p = p1 + v*l
이 식을 풀어서 말해보면 p1을 방향 v로 길이 l 만큼 이동시키는 겁니다.
그래서 1,2 방법은 점 p1, p2 사이의 점들을 계산하였지만 3번째 식은 p1으로부터 길이 l 만큼 떨어진 점을 계산할 수 있습니다. 또한 1번 방법과 3번 방법에 사용된 벡터는 정규화를 시켰냐 안 시켰냐 차이가 있습니다. 이 의미는 벡터의 길이를 1로 변환했냐 안 했냐를 나타냅니다.

 

3차원에서 가장 기본이 되는 직선에 대해 알아보았습니다. 개발하실 때 두 점 사이에 점을 계산해야 하는지 아니면 점으로부터 얼마 떨어진 점을 계산해야 하는지를 잘 고민하셔서 위의 내용 활용하시기 바랍니다.

 

아래 글은 직선과 관련된 글을 정리한 내용입니다.

 

2024.03.21 - [3D Algorithm] - 직선 삼각형 교차점 계산(Ray Triangle Intersection)

 

직선 삼각형 교차점 계산(Ray Triangle Intersection)

tn: triangle normal rd: ray direction p: hit point ro: ray origin v0, v1, v2: triangle vertex 위 그림에서 ray origin으로부터 ray direction의 최단거리 t는 t = ((v0 - ro) • tn) / (rd • tn) •는 내적 로 구할 수 있습니다. t가

darkrock.tistory.com

2023.10.13 - [3D Algorithm] - 3차원 점 직선 투영(Point Line Projection)

 

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

3차원에서 lineP를 지나고 백터가 lineDir인 직선에 점 p를 수직으로 투영하는 문제입니다. 여러 가지 방법이 있겠지만, 간단하게 하려면 점 p를 투영하기 위한 위 그림의 빨간색의 백터와 길이를 구

darkrock.tistory.com

2023.10.11 - [3D Algorithm] - 직선 평면 교차점(Line Plane Intersection)

 

직선 평면 교차점(Line Plane Intersection)

직선과 평면이 만나는 교차점을 계산하는 식에 대해 알아보도록 하겠습니다. 직선의 방정식은 직선을 지나는 한 점과 직선의 방향을 알면 아래와 같이 나타낼 수 있습니다. Line(t) = lineP + t*lineDir

darkrock.tistory.com

 

반응형