지난 글까지 직선과 평면의 방정식을 내적과 외적을 이용해 구하는 과정을 정리하였다.
이번 글에서는 직선과 점 사이 최단거리, 직선과 직선 사이 최단거리, 점과 평면사이 최단거리를 구하는 방법을 정리한다.
(직선과 평면의 경우, 최단거리가 존재하려면 반드시 직선과 평면이 평행해야하는데, 그 경우 직선 위 임의 점에서 평면과 최단거리를 구하면 되기 때문에 점과 평면사이 최단거리를 구하는 것과 같다.)
직선과 점 사이 최단 거리
우선 2차원에서 직선과 점 사이 최단 거리를 구하는 방법을 생각해보자
직선 밖의 점과 직선 사이의 최단 거리는 그 점에서 직선으로 수선의 발을 내렸을 때, 수선의 발과 해당 점 사이의 거리이다.
직선의 방정식을 내적을 이용하여 표현하면, 직선의 법선벡터를 쉽게 구할 수 있다.
이를 이용하면 직선 밖의 점을 지나고 직선과 수직인 새로운 직선의 방정식을 구할 수 있으므로,
이 새로운 직선의 방정식과 기존의 직선의 방정식 사이 교점을 구해 그 두 점 사이 길이를 구하면 최단 거리를 알 수 있다.
다른 방식도 있다.
직선의 방정식을 내적을 이용해 표현하였을 때, 법선벡터의 크기가 1 이라면 (a, b) · (x, y) = d 에서 d는 원점과 직선 사이 최단거리가 된다.
따라서 거리를 찾으려는 점을 원점으로 하는 새로운 좌표계로 직선을 새롭게 표현한 후, d 값을 확인하면 된다.
만약 거리를 찾으려는 직선 밖의 점이 (p, q) 라면, 직선을 (-p, -q) 만큼 평행이동 시킨 직선의 방정식의 d 값을 확인하면 된다.
한번 y = -x + 1 과 원점 사이 최단 거리를 구해보자.
y = -x + 1
y + x = 1
(1, 1) · (x, y) = 1
법선벡터를 normalize 하면,
(1/√2, 1/√2) · (x, y) = 1/√2
따라서 원점과 직선 사이 최단 거리는 1/√2 이다
이번엔 같은 직선과 (2, 2) 사이 최단 거리를 구해보자.
그래프를 그려보면 결과값으로 3√2 / 2 가 나옴을 알 수 있다.
첫 번째 방식으로 최단 거리를 구해보면, (1, 1) 을 방향벡터로 하고, (2, 2) 를 지나는 직선의 방정식을 구하면 된다.
전에 두 직선의 교점을 구하는 방법을 매개변수로 표현된 직선에 대해 배웠으므로, 직선의 방정식을 parametric 방식으로 구해보면,
l(t) = (1, 1) * t + (2, 2)
= (t + 2, t + 2)
와 같이 된다.
이제 y = -x + 1 도 parametric 방식으로 구해보자.
법선벡터가 (1, 1) 이므로, 방향벡터는 (1, -1) 이고, (0, 1) 을 지나므로 이를 이용하여, parametric 방식으로 직선의 방정식을 세우면
l(s) = (1, -1) * s + (0, 1)
= (s, -s + 1)
이제 아래와 같은 방정식을 풀자.
t + 2 = s
t + 2 = -s + 1
두 식을 빼면
0 = 2s - 1
s = 1/2
이를 l(s) 에 대입하면
(1/2, 1/2) 이 수선의 발의 좌표이다.
이제 이 점과 (2,2) 사이의 거리를 구하면
|| (2 - 1/2, 2 - 1/2) || = 3√2 / 2
따라서 우리가 알고 있는 최단거리와 동일하다.
두 번째 방식으로 최단 거리를 구해보면, 주어진 직선을 x 축으로 -2, y 축으로 -2 만큼 평행이동 시켜보자.
y + 2 = - (x + 2) + 1
x + y = -3
이 직선을 내적으로 표현하면
(1, 1) · (x, y) = -3
normalize 하면,
(1/√2, 1/√2) · (x, y) = -3/√2
(1/√2, 1/√2) · (x, y) = -3√2 / 2
최단 거리는 | -3√2 / 2 | = 3√2 / 2 으로 우리가 알고 있는 것과 동일하다.
직선과 점 사이 최단 거리는 파워포인트 같은 프로그램에서 선을 생성했을 때, 선의 선택되는 범위를 구하는데 사용된다.
평면과 점 사이 최단 거리
다음으로 평면과 점 사이 최단 거리를 구해보자.
직선과 직선 사이 최단 거리를 구하기 전에 평면과 점 사이 최단 거리를 먼저 구하는 이유는, 직선과 직선 사이 최단 거리를 구하는 과정에 평면과 점 사이 최단 거리를 구하는 과정이 포함되기 때문이다.
우선 평면과 원점 사이 최단 거리를 구해보자.
사실 이는 직선에서의 경우를 생각해보면 쉽게 알 수 있다.
평면의 방정식을 내적으로 표현하여
(a, b, c) · (x, y, z) = d
와 같은 형태가 되었다고 해보자.
이 때 (a ,b, c) 가 normalize 되어있다면, 원점에서 평면까지 최단 거리는 d 이다.
즉, 이를 일반화 하면 아래와 같다.
이번엔 임의 점에서 평면까지 최단 거리를 구해보자.
이 경우도 위의 직선에서 했던 것과 동일하다.
아까 직선과 임의 점 사이 최단 거리를 구할 때, 제일 간단한 방법이었던 평행이동을 이용한다.
평면 밖의 점 C = (Xc, Yc, Zc) 가 있다고 해보자.
이 점과 평면 n · x = d 사이 최단 거리를 구해보자
이 경우 평면을 (-Xc, -Yc, -Zc) 만큼 (즉, -C 만큼) 평행 이동시키는 것이므로 평행 이동된 평면의 방정식은 아래와 같다.
n · (x + C) = d
이제 이 평면에 대해 원점에서 최단 거리를 구하기 위해 법선백터를 양변에 normalize 해주면
n / || n || · (x + C) = d / || n ||
이 식을 원점에서 최단거리를 구하는 식의 형태로 좌변을 정리하면,
n / || n || · (x + C) = d / || n ||
(n / || n || · x) + (n / || n || · C) = d / || n ||
(n / || n || · x) = d / || n || - (n / || n || · C)
( n · x ) / || n || = { d - (n · C) } / || n ||
붉은색으로 표시한 부분이, 평면의 방정식을 알고 있을 때, 그 평면과 임의 점 사이 최단거리를 구하는 공식이다.
한번 간단한 예시를 통해 이를 확인해보자.
z 축에 수직이면서, (0, 0, -1) 을 지나는 평면이 있다고 해보자.
이 평면의 방정식을 구해보면
(0, 0, 1) · (x, y, z) = d
(0, 0, -1) 을 대입하면
(0, 0, 1) · (0, 0, -1) = -1
d = -1
따라서 구하는 평면의 방정식은
(0, 0, 1) · (x, y, z) = -1
이 평면식의 법선벡터는 normalize 되어있으니, | -1 | = 1 이 원점에서 평면까지 최단 거리이다.
그리고 이 평면은 실제로 xy 평면과 평행하면서 z = -1 을 지나는 평면이므로 최단거리가 1이 맞다.
한번 이 평면과 임의점 (1, 2, 3) 사이의 최단거리를 구해보자.
그래프 공간에 평면과 점을 그려보면다면 최단거리는 4가 됨을 알 수 있다.
과연 4가 나오는지 확인해보자.
한번 아까 구한 공식의 유도과정을 따라 최단 거리를 구해보면
(0, 0, 1) · (x+1, y+2, z+3) = -1
z + 3 = -1
z = -4
따라서 평행이동된 평면은
(0, 0, 1) · (x, y, z) = -4
법선벡터가 normalize 되어있으므로 | -4 | = 4가 최단거리이며, 이는 우리가 알고 있는 값과 일치한다.
이번엔 공식을 그대로 사용해보자.
{ d - (n · C) } / || n ||
에서 d = -1, n = (0, 0, 1), C = (1, 2, 3) 이므로
{-1 - (0, 0, 1) · (1, 2, 3) } / || (0, 0, 1) ||
= -1 - 3 / 1
= -4
위에서 구한대로 최단 거리가 나온다.
직선과 직선 사이 최단 거리
3차원 공간에서 직선과 직선 사이 관계는 서로 만나거나, 교점을 갖거나, 일치하거나, 평행하거나, 엇갈린다.
이때 서로 평행하거나 엇갈리는 두 직선 사이의 최단 거리를 어떻게 구할 수 있을까?
서로 평행하거나 엇갈리는 두 직선 사이 최단 거리를 지나는 직선은 두 직선 모두와 수직임을 이용하면 구할 수 있다.
두 직선의 방향 벡터를 a1, a2 라고 가정하고 시작한다.
우선 두 직선 사이 최단 거리를 만드는 벡터의 방향을 구해보자.
이 벡터의 방향은 위에 적었듯 두 직선 모두와 수직이므로 외적을 이용하여 구할 수 있다.
이 벡터를 n 이라고 하면 아래와 같이 계산된다.
n = a1 x a2
이제 이 벡터를 법선벡터로 하며, a1 또는 a2 를 포함하는 평면의 방정식을 구해보자
n 을 법선 벡터로 하는 평면식은 아래와 같이 쓸 수 있다.
n · x = d
만약 a1 을 포함한다면 a1 내 모든 점이 평면 위의 점이므로, a1 위의 임의 점 Pa1 을 대입해 d 값을 구할 수 있다.
d = n · Pa1
이 두 식을 이용하면, n · x = n · Pa1 로 평면의 방정식을 세울 수 있다.
이제 평면식을 구하였으니, 평면과 직선 사이 최단거리를 구하면 된다.
이 평면은 a2와 평행한데, 맨 위에 적었던 대로, 평면과 직선 사이 최단 거리는 직선 내 임의 점과 평면 사이 최단 거리를 구하는 것과 같다.
a2 위 임의 점 Pa2 와 위에서 구한 평면식 사이 최단 거리를 임의 점과 평면 사이 최단 거리 식을 이용해 구하면
{ d - (n · C) } / || n ||
에서
( n · Pa1 - n ·Pa2 ) / || n ||
이 된다.
이렇게 보면 진짜 뭐가 뭔지 전혀 와닿지 않는다.
직접 실제 수식을 이용해 확인해보자.
서로 엇갈리는 두 직선을 아래와 같이 가정하자.
L1 (t) = (1, 0, 0) + (-1, 1, 0) * t
L2 (s) = (0, 0, -1) + (0, 0, 1) * s
두 직선 사이 최단 거리를 구하기 위해, 두 직선 사이 최단 거리를 만드는 벡터의 방향을 외적으로 구해보자.
(-1, 1, 0) x (0, 0, 1) = (1 * 1 - 0 * 0, 0 * 0 - (-1) * 1, (-1) * 0 - 1 * 0)
= (1, 1, 0)
이제 (1, 1, 0) 을 법선벡터로 하고, L1 위의 임의점 (1, 0, 0) 을 지나는 평면방정식을 구하면
(1, 1, 0) · (1, 0, 0) = d
d = 1
따라서 평면식은
(1, 1, 0) · (x, y, z) = 1
이 평면과 L2 위의 임의점 (0, 0, 0) 사이 최단 거리를 구해보면, 원점과 평면 사이 최단거리이므로
(1, 1, 0) 을 normalize 하면 (1/√2, 1/√2, 0) · (x, y, z) = 1/√2 에서 최단 거리는 1/√2 이다.
또는
( n · Pa1 - n ·Pa2 ) / || n ||
에서
[ { (1, 1, 0) · (1, 0, 0) } - { (1, 1, 0) · (0, 0, 0) } ] / || (1, 1, 0) ||
= (1 - 0) / 1
= 1/√2
와 같이 구할 수 있다.
지금까지 점, 직선, 평면 사이 관계에서 최단 거리를 구하는 방법을 정리하여 보았다.
다음 글에서는 평면에 입사하는 벡터의 반사벡터를 구하는 방법을 정리하고자 한다.
'CS > 멀티미디어응용수학' 카테고리의 다른 글
[멀티미디어응용수학] 6. 삼각형 평면에 쏜 광선의 충돌 판단 (0) | 2023.10.19 |
---|---|
[멀티미디어응용수학] 5. 입사 벡터로부터 반사 벡터 구하기 (0) | 2023.10.17 |
[멀티미디어응용수학] 3. 외적과 외적의 응용 (0) | 2023.10.12 |
[멀티미디어응용수학] 2. 내적과 내적의 응용 (0) | 2023.10.11 |
[멀티미디어응용수학] 1. 직선의 교점 계산 (1) | 2023.10.06 |