프로그래밍/OpenGL

평면 두 개의 교선(교차선) 구하기

이재만박사 2016. 10. 4. 11:29

두 개의 벡터 방정식 

 

r1[3, 4, 0] = 5 - 평면 1

r2[1, 2, 3] = 6 - 평면 2

 

으로 이루어진 두 개의 평면을 교차했을 때의 직선을 구하라

 

n1 을 평면 1의 normal 벡터이고

n2 를 평면 2의 normal 벡터이다

 

간단한 기하학적인 이유로 교선은 두 개의 normal 들에 수직이다

 

직선의 방정식 위치 벡터 r 은 다음과 같다

 

r = a + t * v;

 

여기에서 a 는 위치 벡터이고, v 는 직선과 평행한 벡터이다

 

우리는 a 와 v를 구하면 된다

 

 

1. v 찾기 위해 두 벡터의 cross product는 두 벡터에 수직한 세 번째 벡터를 준다

v 는 n1 과 n2에 수직하기 때문에 v = n1 x n2 는 직선에 평행할 것이다

 

위의 식에서

 

n1 = [3, 4, 0] 이고

n2 = [1, 2, 3] 이므로 

 

v = n1 x n2 = [3, 4, 0] x [1, 2, 3] = [12, -9, 9] 이다

 

 

2. a 를 찾기 위해

 

두 평면의 교점을 구한다 단 여기에서 임의의 점이므로 x = 0으로 대입하면

y, z 만 구하고 식이 두 개 이므로 연립 1차 방정식으로 풀 수 있고

교차점이 나온다

 

3x + 4y = 5      x + 2y + 3z = 6

 

x = 0 대입

 

y = 5 / 4, z = 7 / 6

 

그러므로 

 

a = [0, 5 / 4, 7 / 6]

 

이 된다

 

따라서 직선의 방정식은

 

 

r = [0, 5 / 4, 7 / 6] + t * [12, -9, 9]

 

r = [0, 5 / 4, 7 / 6] + t * [4, -3, 3]

 

이 된다

 

 

 

 

원문 사이트 

 

http://members.tripod.com/vector_applications/xtion_of_two_planes/index.html