sqrMagnitude

Noke·2025년 6월 5일

Unity TIL

목록 보기
21/31

보통 오브젝트 사이의 거리를 구할 때, magnitude를 사용한다.

그런데, sqrMagnitude라는 값이 따로 존재하는데, 이는 magnitude를 제곱한 값이다.

왜 이러한 값이 필요할까?


🛬 두 점 사이의 거리

두 점 사이의 거리를 구할 때, 우리는 피타고라스의 정의를 이용한다.
3차원 상에서 x, y, z 값의 차의 제곱을 이용해서 거리를 구하는 것은 사실 피타고라스 정의를 2번 사용해서 구하는 것이다.

피타고라스 정의는 삼각형의 빗변을 구하는 공식으로 아래와 같다.

직각삼각형의 빗변을 c라고 하고, 나머지 두 변을 각각 a, b라고 할 때, 다음과 같은 공식이 성립한다.
a^2 + b^2 = c^2

원래 피타고라스 정의에 의하면, 빗변은 제곱의 값을 가지는데, 사실 magnitude는 이 제곱에 제곱근(흔히 말하는 루트)을 하여 값을 반환해주는 것이다.


⚔️ magnitude VS sqrMagnitude

그러면 sqrMagnitude는 무엇일까?
바로 이 제곱근을 하기 전에 값을 반환해준다.

사실 개발자들이 값을 비교하기에는 당연히 magnitude 값이 훨씬 편하다.
하지만, 성능면에서 제곱근을 하는 것이 당연히 효율이 떨어진다.

따라서, 업데이트 등 해당 값을 계속 확인해주는 작업이 필요한 경우에 sqrMagnitude를 사용하는 것이 성능 면에서 우수한 것이다.


✨ 마무리

지금까지 magnitude 말고는 있는 줄도 몰랐던 것을 알게 되었다.

사실 sqrMagnitude를 많이 사용할 지는 모르겠지만, 성능 최적화는 개발자에게 있어서 필수적인 구현 사항이라고 생각하기 때문에 알아두는 편이 좋을 것 같다.

profile
유니티 개발자(진)

0개의 댓글