구의 그림자

주어진 문제

3차원 공간에 점광원과 구가 있다. 점광원은 모든 방향으로 빛을 방사하며 구는 빛을 가린다. 구가 빛을 가리기 때문에 생기는 그림자가 x-y평면에 만드는 자취의 방정식을 구하여라.

준비단계.

광원이 $A$에 있고, 구의 중심이 $S$에 있다고 하자. 그리고 구의 반지름은 $d$라고 하자.

$k=|A-S|$라 하자.

1단계

광원을 꼭지점으로 하는 원뿔 중, 구에 접하는 것을 구한다.

1-1단계

원뿔이 구에 접한다고 하면, 구와 원뿔의 접점은 원을 이룬다. 이때, 이 원의 중심을 $C$라고 하고, 원의 반지름을 $R$이라고 하자.

1-1-1단계

구에 접하는 원의 중심의 위치는 간단한 비례식을 통해서 구할 수 있다. 또는 피타고라스의 정리를 이용해도 구할 수 있다. 자세한 계산을 생략한 채 구한다면 다음과 같다.

$C = (S-A)(1-\frac{d^2}{k})+X$

1-1-2단계

구에 접하는 원의 반지름을 $R$이라고 하면, 피타고라스의 정리를 이용해서 쉽게 구할 수 있다.

$R = d^2(1-\frac{1}{k})$

1-2단계

원뿔이 구에 접하면서 생기는 원의 방정식을 찾는다. 원 위에 있는 점을 $B$라고 하자. 그럼, 원 위에 있는 점은 다음의 두 방정식을 모두 만족해야 한다.

평면의 방정식

$(A-C)\cdot (B-C) = 0$

원의 방정식

$|B-C|^2 = R^2$

이 방정식은 미지수가 3개인 2차 연립 방정식이다. A, C, R을 알고 있으므로 B도 알 수 있다. 하지만 “원”은 1차원 도형이기 때문에, 1개의 매개변수를 남겨두고 나머지 2개는 그 매개변수 1개로 표현해야 한다. (그렇게 해야만 앞으로 그림자가 만드는 자취의 방정식을 구할 때 그 매개변수를 쓸 수 있다.)

$B=(b_x(\theta), b_y(\theta), b_z(\theta))$

라고 하자.

1-2-1단계

$A-C = G$

$B-C = H$

라고 하자. 그럼 위의 방정식은

$G\cdot H = 0$

$|H|=R$

으로 변신한다. 우린 H가 뭔지 알아내면 된다.

이걸 쉽게 풀려면, 일단 이게 원의 방정식이라는걸 알고 있으니까, 원의 극좌표 형식을 생각해 보자. 가령 $\alpha$와 $\beta$가 크기가 1이고 서로 수직인 벡터라고 하면

$R(\alpha\cos(\theta) +\beta \sin(\theta)) = H$

이제 $\alpha$와 $\beta$가 G에 수직인 벡터이기만 하면 된다. 그런데, G의 수직인 벡터는 쉽게 찾아낼 수 있다.

1-2-2단계

다음의 보조정리를 설명하고 넘어간다.

K와 L이 그냥 어떤 두 벡터라고 하자. 단, 이때 K는 $|K|=1$을 만족한다. 그럼 L로부터 항상 K에 수직이면서 서로 직교하는 두 벡터 M과 N을 찾아낼 수 있다.

벡터 M을 다음과 같이 정의하자.

$M = L – (K \cdot L)$

벡터 M이 K와 직교하는 것은 쉽게 알 수 있다. (내적 해보면 된다.)

이제 K와 M에 동시에 직교하는 벡터도 다음과 같이 알 수 있다.

$N = K\times M$

이때 $\times$는 통상의 3차원 Cross product를 의미한다.

여기서 얻은 M과 N을 크기를 1로 만들어 주면 1-2-1단계의 $\alpha$와 $\beta$를 알아낼 수 있다.

1-3단계

광원과 원 위에 있는 점을 지나는 직선의 방정식을 구한다. 공간에서 두 점 A와 B를 지나는 직선의 방정식은 다음과 같다.

$\frac{x-a_x}{b_x – a_x} = \frac{y-a_y}{b_y-a_y} = \frac{z-a_z}{b_z – a_z}$

이때, B의 각 성분은 매개변수 $\theta$에 따라서 바뀌므로 실질적으로 위의 직선의 방정식은 원뿔의 방정식이다!

2단계

그림자가 만드는 자취의 방정식을 알아낸다.

2-1단계

1단계에서 알아낸 원뿔의 방정식에 z=0을 대입해서 그 조건을 만족하는 $(x(\theta), y(\theta))$를 찾아낸다.

2-2단계

필요하다면 위에서 알아낸 매개변수 방정식을 $y=f(x)$ 꼴로 바꿔준다.

이 모든 계산에 A, S, d를 문자로 대입해서 풀어낼 수도 있다. 여백이 부족한건 아니지만 일단 그냥 둔다.

참고로, 문자로 대입해서 명시적으로(Explicitely) 풀고 싶다면 1-3단계 -> 2-1단계 -> 2-2단계를 먼저 해결한 후, 1-2단계부터 1-1단계로 거꾸로 거슬러 올라가는 것이 쉬울 것이다.

코멘트

“구의 그림자”에 대한 4개 응답

  1. 
                  snowall
                  아바타

    ㅋㅋㅋㅋ그런것이었군요

  2. 
 아바타

    비밀댓글입니다

  3. 
                  snowall
                  아바타

    그렇군요. 하지만 이 방법은 이 문제에만 적용되는 해법인것 같아 보이네요 ㅋㅋ

    하지만 훨씬 쉽군요ㅋㅋ

  4. 
 아바타

    비밀댓글입니다

snowall 에 응답 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.