이전글에서 벡터의 내적과 외적을 이용해서 직선 삼각형 교차점을 계산했었습니다.
2024.03.21 - [3D Algorithm] - 직선 삼각형 교차점 계산(Ray Triangle Intersection)
이번글에서는 선형방정식을 이용해서 직선 삼각형 교차점을 계산하는 방법을 보도록 하겠습니다.
삼각형 꼭지점 abc, 직선의 한 점 p, 직선의 방향 dir인 아래 그림을 예로 들겠습니다.
직선 위의 한 점은 이전글에서 거리 t와 벡터에 의해 식을 세울 수 있었습니다.
2023.10.26 - [3D Algorithm] - 3차원 직선 계산 표현(개발자 관점)
직선 위의 점 = p + t*dir
삼각형 위의 한 점은 삼각형 꼭지점 abc에 의해 다음과 같이 식을 세울 수 있습니다.
삼각형 위의 점 = a + u*ab + v*ac
여기서 u, v는 0보다 크며 u+v은 1 이하여야 합니다.
위의 두 식을 합치면 다음과 같이 됩니다.
p + t*dir = a + u*ab + v*ac
좌변을 t, u, v 관한 식으로 보내면 다음과 같습니다.
t*dir - u*ab - v*ac = a - p
이식을 3차원 일 때 x, y, z에 관해서 행렬의 선형 방정식으로 만들면 다음과 같습니다.
(dir -ab -ac) (t) = a-p //x좌표
(dir -ab -ac) (u) = a-p //y좌표
(dir -ab -ac) (v) = a-p //z좌표
이 선형 방정식을 풀면 t, u, v가 나오는데 u, v가 0보다 크며 u+v이 1 이하일 때 p +t*dir은 삼각형 안에 있는 점이 됩니다. C++ Eigen Library 이용해서 선형 방정식을 계산하는 코드는 아래 글에서 소개했었습니다.
2023.11.28 - [3D Algorithm] - 세 점을 지나는 원 중심 계산(Eigen Library 이용한 최소자승법)
'3D Algorithm' 카테고리의 다른 글
CCW 정렬 알고리즘 (0) | 2024.04.23 |
---|---|
내적을 이용한 특징점 계산 (0) | 2024.04.09 |
직선 삼각형 교차점 계산(Ray Triangle Intersection) (0) | 2024.03.21 |
벡터 내적 외적 계산 공식과 결과 의미 (0) | 2024.03.12 |
사이각 벡터 계산 (0) | 2024.03.08 |