반사벡터

Reflection Vector

 

 

 

반사 벡터는 정반사이다.

정반사는 입사각과 반사각이 동일한 반사를 의미한다. 

 

◎ 투영 벡터

반사 벡터를 구하려면 투영 벡터를 먼저 구해야 한다.

투영이란 어떤 벡터 v를 단위 벡터 n에 내적하여 구할 수 있는 v의 n방향으로의 길이를 뜻한다. 

내적값이 스칼라이므로 투영된 방향으로의 벡터를 구하려면 이 내적값에 방향벡터 n을 곱해주면 된다. 

(v·n)n을 이용해 벡터를 구할 수 있게 된다. 

* 왜 이렇게 되는지 추가 설명!

더보기

v와 n을 내적하면 cosθ를 결과값으로 얻게 된다.

v·n = ||v||||n||cosθ

 

여기서 이 삼각형은 직각삼각형이므로 코사인값은 밑변/빗변 즉, ||n|| / ||v|| 이다.

||n|| = ||v||cosθ 이고 투영한 길이를 w라고 했을 때

w = ||v||cosθ가 된다. 

 

길이를 구했으니 방향도 알아야 하는데, 길이가 1인 단위벡터는 방향의 정보만을 갖고 있으므로 

단위벡터인 n의 방향으로의 길이를 구하려는 투영의 값에 n을 곱해주면 된다.

 

n의 방향 벡터 = n / ||n||

투영 벡터 = ( n / ||n|| ) * ||v||cosθ

 

하지만 두 벡터 사이각을 항상 알 수 없으므로

v·n = ||v||||n||cosθ 라는 사실을 응용해서 v·n/||n|| = ||v||cosθ 이런식을 만들어내면

두 벡터만 주어졌을 때, 한 벡터를 다른 벡터에 투영하는 공식을 구했을 때

((v·n) / ||n|| ) * ( n / ||n|| ) 이런 공식이 나오게 된다.

 

◎ 반사벡터 

투영 벡터를 이용해 구한 벡터로 반사 벡터를 계산한다.

다음과 같이 입사벡터(P)와 법선 벡터(n)이 있을 때 반사 벡터(R)은 입사벡터(P)와 크기가 같고 반사각과 입사각이 같다.

P와 n을 이용하면 반사벡터(R)을 구할 수 있다. 

 

우선 위의 투영 벡터를 구하는 방식을 이용해 입사 벡터 P의 역벡터 -P를 n의 연장선상에 투영시켜서 투영벡터 n(-P · n)을 구한다. 

 

어떻게 투영 벡터를 구하는건지? 

더보기

이렇게 돌려보면 쉽게 알 수 있다!

 

그 후 입사 벡터 P의 시작 위치를 원점에 위치 시키고 투영으로 구한 n(-P·n)를 더하면 입사면에 투영된 벡터의 위치를 구할 수 있다. 

입사 벡터 P에 n(-P·n)를 한 번 더하면 입사면에 투영된 위치를, 두번 더하면 반사벡터 R을 구할 수 있다.

 

따라서 반사벡터 R을 구하는 공식은 다음과 같다.

R = P + 2n(-P·n)

 

 

 

 

참고 자료;

https://toymaker.tistory.com/entry/%EB%B0%98%EC%82%AC-%EB%B2%A1%ED%84%B0-Reflection-Vector


https://ifyouwanna.tistory.com/entry/%EB%B0%98%EC%82%AC%EB%B2%A1%ED%84%B0


https://gyong0.tistory.com/22

+ Recent posts