개발
벡터의 정규화(Normalization)
Majangnan
2023. 3. 21. 12:16
정규화
어떤 대상을 일정한 규칙이나 기준에 따르는 정규적인 상태로 바꾸거나 비정상적인 대상을 정상적으로 돌리는 과정
벡터의 정규화
게임 개발을 할 때 보통 플레이어의 이동은 WASD 키를 이용하여 구현한다. W키를 입력하면 수직 입력 값을 1로 받고, S는 -1, D를 입력하면 수평 입력 값을 1로 받고, A는 -1로 받는다. 이렇게 입력 받은 이동 방향에 이동 속도를 곱하여 이동을 구현하는 것이다.
그런데 대각선 방향으로 방향키를 입력하면 (W+A, W+D, S+A, S+D) 수직 벡터와 수평 벡터가 더해져서 대각선 방향의 벡터가 생성된다. 이 대각선 벡터의 길이는 피타고라스의 정리에 의해 루트 2 (약 1.4)임을 알 수 있다. 이렇게 되면 대각선으로 이동하는 속도가 수평, 수직으로 이동할 때보다 약 1.4배 빨라지는 문제가 발생하게 된다.
이런 문제를 해결하기 위해 두 개를 동시에 눌러도 동일하게 1 이라는 값이 되도록 단위길이로 환산해 줄 필요가 있는데, 이 과정을 벡터의 정규화 라고 한다. 그리고 이처럼 길이가 1인 벡터를 '단위 벡터' 또는 '정규화 벡터' 라고 한다.