Article

Gamza 2011. 5. 19. 12:14

전반사는 물체가 충돌하여 튕겨나갈때 라던가, 빛의 반사, 당구공등의 구현에 사용되는데, 이것은 벡터를 가지고 생각해보면 생각보다 매우 간단하게 구현됨을 알수 있습니다. 


전반사

전반사는 입사벡터와 반사벡터의 크기가 동일하고, 입사각과 반사각이 같은 것을 말합니다.




여기서 우리가 풀고자 하는 문제는 충돌면의 법선벡터(N)와 입사벡터(D)만을 가지고 반사벡터([?])를 만들고자 하는것입니다.
그림을 보고 머리를 굴려봅시다.

negDprj : 벡터-D를 법선N에 투영한 벡터
위에나오는 직각삼각형은 모두 '합동'입니다.
따라서 [?]는 벡터negDprj를 두배로 한 벡터와 벡터D의 더한 벡터임을 알 수 있습니다.
[?] = 2 negDprj + D
여기에 투영벡터공식(negDprj)을 적용하면.....
[?] = ( 2 * (-D•N)/(N•N) ) N + D
만약 법선 벡터 N이 단위벡터라고 가정하고 정리하면...
[?] = ( 2 * (-D•N) ) N + D
이상입니다...♡달링 알랍♡


좋은 글 정말 감사합니다. 담아갈게요