정규화 벡터를 사용하는 이유
http://stackoverflow.com/questions/10002918/what-is-the-need-for-normalizing-a-vector
- 필수적으로 정규화 벡터를 사용할 필요는 없다. 그러나 정규화 벡터는 식을 굉장히 축소시켜주고, 따라서 API 또한 매우 간단해진다.
만약 u,v 두 벡터의 각도를 구한다고 생각해보자. 만약 두 벡터가 크기가 1인 unit 벡터라고 하면, 둘을 그냥 arccos(u*v)를 취하면 된다. 그러나 두 벡터가 unit 벡터가 아닌 경우에는 arccos(u*v/(|u||v|))를 취해야 한다. 이 경우에는 결국 u와 v의 크기를 구해야 한다.
- 벡터는 방향과 크기로 정의된다. 벡터가 정규화 될때에는 방향이 아닌 크기만 변한다. 그래서 방향이 같은 벡터들을 정규화하면 모두 같은 벡터가 된다.
- 벡터를 계산할 때에 크기를 제외하고 방향만 고려하고 싶을 때 정규화 벡터를 사용한다. 벡터의 magnitude 즉 크기는 스칼라값으로, 1은 곱의 항등원이기 때문에 크기가 1인 벡터는 여러가지 계산을 할 때에 결과 벡터의 크기가 식의 결과를 왜곡(skew)하지 않도록 돕는다.
반응형
'computer science > 3d graphics' 카테고리의 다른 글
OBB (Oriented Bounding Box)와 AABB (Axis-Aligned Bounding Box) (15) | 2021.07.26 |
---|---|
동족좌표계와 동차좌표 (Affine Space, Homogeneous coordinate) (0) | 2021.07.26 |
컴퓨터 그래픽스 렌더링 파이프라인의 개요 (0) | 2021.07.26 |
짐벌락과 오일러 각 (gimbal lock, euler angles) (0) | 2021.07.26 |
댓글