어렸을 때 배웠던 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)
2023.10.13 - [3D Algorithm] - 3차원 점 직선 투영(Point Line Projection)
2023.10.11 - [3D Algorithm] - 직선 평면 교차점(Line Plane Intersection)
'3D Algorithm' 카테고리의 다른 글
벡터 내적 활용(개발자 관점) (0) | 2023.10.30 |
---|---|
라디안 각도 변환과 개념(Radian Degree) - 쉽게 그림으로 설명 (0) | 2023.10.26 |
stl, obj 3D 파일 포멧 기본 정보(3D File Format) (0) | 2023.10.23 |
평면 방정식 의미(개발자 관점) (0) | 2023.10.20 |
3차원 점 직선 투영(Point Line Projection) 방법1 (0) | 2023.10.13 |