티스토리 뷰

지난 linear algebra - 원형 물체에 반사되는 빛의 반사각(2)에서 원의 중심을 찾는데 급급해서  normal form이라고 알려진 새롭게 도입한 직선의 방정식 에 관해 진지하게 고민하지 못했다. 이 방정식에 대해 좀 더 꼼꼼히 살펴 본 뒤 이전에 구한 방정식에 문제가 없는지, 문제가 있다면 해결책은 무엇인지 먼저 살펴 볼 것이다.

normal form에서 p값은 원점과 직선 사이의 거리를 나타내는 값으로 직선이 1사분면, 2사분면, 3사분면, 4사분면에 나타나는 것과 상관없이 항상 양수의 값이다. 이것이 normal form으로 직선의 방정식을 바꿀 때  에서 +값을 취할지 - 값을 취할지를 결정할 때의 규칙이다.


컴퓨터 화면에서는 3사분면의 직선은 나오지 않으므로 고려할 필요가 없지만 1사분면, 2사분면, 4사분면의 직선은 직선이 어디에 있고 공이 어떤 방향으로 가 부딪치는가에 따라 p값에 r값을 빼야 할지 r값을 더해야 할지 정해진다.

4사분면에 있는 직선만 고려해도 벌써 2가지 경우의 수가 나온다. 이렇게 여러가지 경우의 수가 나오는 것을 어떻게 피할 수 있을까? 최적의 해결책은 볼의 중심이 원점이 되도록 볼 궤적 방정식과 평면의 직선 방정식을 수정하여 볼과 평면이 만날 때의 볼의 중심 좌표를 구하는 것이다. 이렇게 되면 볼의 궤적과 직선의 위치에 상관없이 항상 p-r이란 공식이 성립한다.

또한 이후에 볼의 반사각을 구할 때 궤적 벡터를 손쉽게 구하기 위해 볼의 궤적 방정식 y=mx+C도 normal form으로 바꾼다.


현재 볼의 중심 좌표로 원점을 변경했을 때 볼의 궤적 방정식은

평면의 직선 방정식은

r 만큼 원의 중심으로 평행 이동한 방정식은


볼의 궤적 방정식과 r만큼 원의 중심을 향해 평행 이동한 직선이 만나는 점을 일반적인 대수식으로 풀면 아래와 같다.

이것을 LU 나 가우스 소거법으로 풀기 위해 행렬로 만들면


이렇게 구한 x와 y 값에 볼의 중심 좌표 를 더하면 평면과 볼이 부딪쳤을 때의 볼의 중심 좌표가 된다.


굉장히 수식이 복잡해 보이긴 하지만 우리가 지금까지 구한 공식이 정확하다면 이것을 컴퓨터로 프로그래밍하는 일은 굉장히 간단하다. 단순히 수식을 입력하면 된다.

이제 본격적으로 볼이 반사되는 방향을 나타내는 벡터 ref를 찾아보자.

반사되는 방향을 나타내는 ref 벡터도 두 가지 방법으로 구할 수 있다. 첫 번째 방법은 회전 행렬을 이용하는 것이다. 볼의 반사 궤적은 x축이 β각 만큼 회전 했을 때 반사되는 궤적으로 생각할 수 있다. 이를 회전 행렬과 반사 행렬의 연산으로 나타내면

행렬은 교환 법칙이 성립하지 않는다. AB와 BA는 같지 않다. 변환되는 순서는 우(right)에서 좌(left)로 진행된다. 따라서 변환 순서에 따라 정확히 행렬의 위치를 배열하는 것이 중요하다. 위의 과정을 그림으로 순서대로 표시하면 아래와 같다.


위의 행렬 연산의 최종 결과는 X축이 β각 만큼 회전 되었을 때의 좌표계에서 반사 벡터를 나타내고 있다. 우리는 X축이 회전하기 이전의 좌표계로 ref를 구해야한다. 따라서 X축을 마지막으로 -β각 만큼 회전해야 한다.



위의 행렬 연산으로 구한 벡터 ref의 x와 y값을 부호를 확인하면 다음 볼의 방향을 알 수가 있다. 위의 결과 식은 딱히 약점이 없다. 특별한 예외 상황을 고려할 필요가 없이 언제나 적용되기 때문이다. 하지만 연산 시간 면에서 더 효율적인 방법이 있다.  다음 글에서 이 방법을 살펴 본 뒤 최종 목표인 빛이 원에서 반사 되었을 때의 그 반사각을 구해 볼 것이다.


댓글
공지사항
최근에 올라온 글
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함