제목으로 보이다시피, 이 글에서는 한 벡터를
단위 벡터(크기가 1인 벡터)로 만드는 과정을 설명하려 한다.
먼저 알아둬야 할 사전지식이 있는데,
공식을 담을 사진에서 쓸
기호이다. 그 기호는 || || 으로,
절댓값 기호가 두 개 뭉쳐있는 듯이
생겼는데, 벡터의 크기라는 뜻이다.
ex) || t || 벡터 t의 크기.
이제 본격적으로 알아보자.
v 라는 이름의 2차원 벡터를 하나 만들어준다.
이해를 위해 비교적 간단한 수인
1, 2으로 벡터를 구성하였다.
이제 벡터의 크기를 구해야 하는데,
가상의 직각 삼각형을 만들어서
빗변의 길이를 확인해 주면 된다.
(순서쌍으로 생각하면 x = 1, y = 2)
이러한 직각 삼각형이 있다고 하면,
빗변(AC)은 얼마일까? 그렇다.
피타고라스 정리를 이용하면
이기 때문에, 1과 2를 대입해 주면,
전개하면,
넘기고 더해주면,
이렇게 된다.
그렇기 때문에 C는 루트 5가 된다.
이게 방향을(1, 2)로 갖는 벡터의 크기(힘)이다.
앞에서 설명한 벡터의 크기 기호를 사용하면,
이렇게 나타낼 수 있게 된다.
그럼 이 값으로, 벡터의 x, y를 하나씩 나눠주면 된다.
x는 1, y는 2이기 때문에,
정규화된 벡터는 이렇게 나타내진다.
루트 5가 2.23606797749..이라는 걸 고려할 때,
계산기로 이걸 계산해 보면,
이 정도로 나오게 된다.
이러면 정규화가 완료된 것이다.
크기가 1인걸 보여주기 위해 역으로 계산해 보겠다.(검산)
정규화된 벡터의 x값을 제곱,
y값도 제곱해 준다.
x제곱과 y제곱을 더해보면,
이렇게 나오게 된다.
루트 5의 근삿값을 사용한 것과,
컴퓨터가 소수를 처리할 때
표현할 수 있는 범위가 정해져 있다는 등의
이유로 1과는 아주 살짝 다르게 나오지만,
1과 근사하며, 단위벡터가 된 것을 볼 수 있다.
지금까지의 과정을 한 그림으로 나타내 보자면 이렇다.
여기까지 벡터의 정규화에 대해서 알아보았다.
나(필자)의 블로그가 게임 개발에 중점을 둔 만큼,
벡터의 정규화는 게임개발에 정말 많이 나오고,
사실 프로그래밍 할 때는 VectorN.normalized라는 메서드로
간편히 할 수 있지만, 그 원리가 궁금해져 찾아보고, 적어보았다.
https://alpaca-code.tistory.com/109(VertorN.normalized 예시)
도움이 되었길 바라며,
끝.
'게임 개발 > 게임수학' 카테고리의 다른 글
오일러각의 정의, 문제점과 사원수의 특징, 사용이유 (0) | 2023.10.12 |
---|---|
게임수학) 게임을 만들때 삼각함수를 쓰는 예. (0) | 2023.01.20 |
소박한 집합론(수의 종류,구분) (0) | 2022.11.26 |
유니티) 2, 3차원에서 적용 가능한 벡터의 정규화 방법. (0) | 2022.11.18 |
유니티 콜라츠 추측 계산기 - 2부 (2) | 2022.09.19 |
댓글