저번시간에 Dot Product ( 내적 ) 에 대해 잠깐 포스팅 했다

3D 그래픽에서 쓰이는 부분
- 광원을 각도를 계산해서 명암을 줄때
- 카메라에 보이지 않는부분을 계산해서 렌더링할때 제외하기 위해서 ( 성능향상 )

이런식으로 카메라의 시야와 법선벡터 A,B,C,D 의 각도가 90도 이하면 렌더링을하고
90도이상이면 렌더링을 하지않는다.
광원또한 마찬가지이다.
광원의 들어오는와 법선벡터의 각도가 90도 이하면 빛을 받고
90도 이상이면 빛이 뒤에있기때문에 빛을 받지 않는다. ( 물론 더 복잡한 광원 알고리즘은 반사광까지 계산해서 마냥 빛의 뒤에있다고 완전 어둠일 순 없을수 있다. )
계산
벡터의 내적을 계산하기 위해서는 먼저 차원이 같은 두 벡터가 필요하다.
벡터의 각 성분들끼리 곱셈을 한 뒤, 결과를 더해주면 내적이 계산된다.
A[2 ,-1] + B[2 , 0]
A∙B = [2 * -1] + [2 * 0] = -2 + 0 = -2
여기서 결과가 양수라면 90도보다작다는뜻.
음수라면 90도보다 크다는 뜻이다.
항상 arccos 으로 계산하면 컴퓨터 자원을 너무 많이 잡아먹기에 이런식으로 계산하는게 이득이다.
'개인공부 > C++ Graphics' 카테고리의 다른 글
| OpenGL # 18 Tessellation Shader (0) | 2025.01.21 |
|---|---|
| OpenGL #17 광원 (1) | 2025.01.18 |
| OpenGL #15 Translation, Transformation, Transpose (0) | 2025.01.17 |
| OpenGL #14 Projection - MVP(3/3) (0) | 2025.01.17 |
| OpenGL #13 Projection (2/3) (0) | 2025.01.16 |