본문 바로가기
3D Algorithm

3차원 두 직선 교차점(Two Line Intersection)

by DarkRock 2024. 9. 10.
반응형

 

3차원에서 두 직선 교차점을 찾는 방법 2가지를 소개하겠습니다.

1. 첫 번째 행렬식을 이용한 교차점 계산입니다.

 

점 4개 p1, p2, p3, p4가 있고 직선의 두 벡터 d1(p2-p1), d2(p4-p3)가 있을 때(두 벡터는 길이 1로 정규화)
직선 1 : p1+td1
직선 2:  p3+sd2
로 볼 수 있으며, 교차점 있다는 것은 
p1+td1 = p3+sd2
이 식으로 표현이 가능합니다. 이때 t와 s를 구하면 됩니다.


직선 식 참고는 아래글에서 확인하세요.

2024.04.24 - [3D Algorithm] - 3차원 직선 계산 및 벡터 표현(개발자 관점)

 

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

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

darkrock.tistory.com

 

x, y, z로 분리해서 식을 만들면
 p1x + td1x = p3x + sd2x
 p1y + td1y = p3y + sd2y
 p1z + td1z = p3z + sd2z

t, s 미지수를 ax=b 형태로 만들면 아래와 같이 행렬식이 됩니다.
 (d1x    -d2x)  ( t )  = (p3x-p1x)
 (d1y    -d2y)  ( s )  = (p3y-p1y)
 (d1z    -d2z)  (   )  = (p3z-p1z)

 

이 행렬식을 풀어 t, s를 구해 교차점을 구하면 됩니다.
eigen library 이용해서 t, s를 구하는 건 아래글을 참고하세요.

2023.11.28 - [3D Algorithm] - 세 점을 지나는 원 중심 계산(Eigen Library 이용한 최소자승법)

 

세 점을 지나는 원 중심 계산(Eigen Library 이용한 최소자승법)

2차원에서 세 점을 지나는 원의 중심을 Eigen 라이브러리를 이용해서 구하는 방법을 알려드리겠습니다. 우리가 일반적으로 알고 있는 원의 방정식은 (x-a)^2 + (y-b)^2 = r^2 이며, 이 식은 표준형이라

darkrock.tistory.com

 

 

2. 두 번째  벡터 내적과 외적을 이용한 교차점 계산입니다.

벡터 외적은 두 벡터로 이루어진 평행사변형의 면적과 관련이 있다고 했습니다. 아래글은 벡터 외적을 이용해서 삼각형의 면적을 구하는 글입니다.

2023.12.26 - [3D Algorithm] - 3차원 삼각형 면적 계산 5가지 방법(좌표, 길이, 각도, 외적 이용)

 

3차원 삼각형 면적 계산 5가지 방법(좌표, 길이, 각도, 외적 이용)

3차원에서 삼각형의 면적을 구하는 여러 가지 방법을 알려드리겠습니다. 첫 번째 방법은 삼각형의 밑변과 높이를 알았을 때 구하는 식입니다. 중고등학교 때 많이 배웠던 식입니다. 두 번째 방

darkrock.tistory.com

 

같은 벡터를 외적 하면 면적이 0이기 때문에 외적이 0으로 계산됩니다. 이걸 이용해서 아래식이 유도가 됩니다.

출처: Real-Time-Rendering

 

위 식에서 구해지는 s 혹은 t를 이용해서 교차점을 계산하면 됩니다.

s의 분모 ||d1 X d2||^2가 0이면 두 직선은 교차점 없이 평행하다고 봐야 합니다.

참고 url: https://www.realtimerendering.com/intersections.html#I304

 

Object/Object Intersection

Last changed: February 13, 2024 This page gives a grid of intersection routines for various popular objects, pointing to resources in books and on the web. The most comprehensive books on the subject are Geometric Tools for Computer Graphics (GTCG) and Rea

www.realtimerendering.com

 

반응형

'3D Algorithm' 카테고리의 다른 글

3차원 회전  (0) 2024.09.13
벡터 계산과 단위벡터  (0) 2024.09.11
Morton Code  (0) 2024.09.04
CAD Revolve  (1) 2024.09.03
AABB(Axis Aligned Bounding Box) 계산과 활용  (0) 2024.08.22