Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

MOONSUN

[게임 수학] 반사 벡터(Reflection Vector)와 투영 벡터(Projection Vector)) 본문

D3D

[게임 수학] 반사 벡터(Reflection Vector)와 투영 벡터(Projection Vector))

MoonSun_v 2025. 9. 23. 12:24

 

앞 글에서 라이팅 모델들에 대해 알아봤는데, 반사 벡터 라는 개념이 언급되었었다.

이 글에서는 반사 벡터와 유도 수식을 알아보도록 하자.

 

 

1. 반사 벡터 (Reflection Vector)

말 그대로 반사 벡터 란,

어떤 물체 표면에 빛(또는 입사 벡터)가 들어왔을 때, 그 표면에서 거울처럼 튕겨져 나가는 방향을 나타내는 벡터를 말한다.

 

 

 

2. 투영 벡터를 구해보자.

반사 벡터를 구하려면, 먼저 투영 벡터를 구할 수 있어야 한다. 

Fig.1

 

우리가 원하는 건 A 방향으로 벡터 투영하는 것.

( B는 크기가 1인 방향 단위벡터라고 가정한다. )

 

2-1. 투영 크기 

cosθ = 밑면 / 빗면 이다.
  • 위의  Fig.1 그림에서, 밑면 = Prog(A) 이고, 빗면 = |A| 이다. 
  • cosθ = Prog(A) / |A| 이므로 
  • 위와 같은 식, Prog(A) =  |A| cosθ  가 된다. 
즉, A를 B의 위로 내렸을 때, 그 길이는 |A| cosθ  가 된다. 

 

 

 

2-2. 내적 사용

내적 공식은 위와 같았다.

 

그런데, 우리의 B는 크기가 1인 방향 단위벡터 이기 때문에,

위와 같은 식이 된다.

즉, 내적 값 자체가 투영 길이가 된다는 것. 

 

 

2-3. 대입 (투영 길이)

간단하다, 2-1 과 2-2를 합쳐보자. 

 

이미 2-2에서 내적 값 자체가 투영 길이가 된다는 것을 알게 되었기 때문에

필요 없는 과정이기도 하지만, 이해를 위해 식을 다시 정리해봤다. 

 

 

2-4. 방향 부여 

방향은 B와 같아야 하므로, 방향을 곱해준다. 

 

2-5. 결론

즉, (B가 단위벡터일 때) 투영 공식은 다음과 같다.

 

이렇게 구한 투영 공식은 반사 벡터를 구하는 과정에서 사용될 것이다. 

 

 

 

3. 반사 벡터를 구해보자. 

입사벡터 P와 법선벡터 n이 주어졌을 때, 반사벡터 R은 어떻게 구할 수 있을까?

 

 

 

3-1. P의 역벡터를 N에 투영(Projection)시킨다.

 

위에서 구했던 투영 공식은 N(-PㆍN)  

 

 

3-2. P를 원점으로 이동시키고 n(-Pㆍn)을 더하면 P1이 나온다.

 

3-3. 한번 더 더하면 반사벡터 R을 구할 수 있다.

 

즉, 반사벡터 R = P + 2N(-PㆍN)  이다.