유니티/엔진

[Unity] magnitude, sqrMagnitude

RꞮbble 2026. 4. 6. 21:22

 

주사위 구현 영상을 보던 중, magnitude와 sqrMagnitude의 차이가 궁금해서 찾아봤다. 

 

magnitude

  • Vector의 길이를 반환하는 프로퍼티
  • Vector의 길이 = Vector의 각 좌표의 제곱들의 합을 루트 연산한 값  

ex) Vector (1, 2, 3)의 magnitude = 루트 (1^2 + 2^2 + 3^2)

 

 

sqrMagnitude

  • Vector의 길이를 반환하는 프로퍼티
  • Vector의 길이 = Vector의 각 좌표의 제곱들의 합

ex) Vector (1, 2, 3)의 sqrMagnitude = (1^2 + 2^2 + 3^2)

 

 

 

문제

성능때문에 sqrMagnitude를 주로 사용한다고 한다.

정확히 어떤 성능이 더 좋아서 sqrMagnitude를 사용하는 걸까?

 

해결

루트 연산은 비싼 연산이다. 

Vector의 길이를 비교해야 한다면, magnitude보다는 루트 연산을 하지 않는 sqrMagnitude를 사용하는 게 좋다. 

 

예시 코드

using UnityEngine;

public class Program : MonoBehaviour
{
    private Vector3 v;
    
    private void Awake()
    {
        v = new Vector3(1, 2, 3);
        
        if(v.magnitude > 5.0f)
            Debug.Log("magnitude 연산");
            
        if(v.sqrMagnitude > 25.0f)
            Debug.Log("sqrMagnitude 연산");
    }
}

 

'유니티 > 엔진' 카테고리의 다른 글

[Unity] 특정 로직을 한 번만 실행하는 방법  (0) 2026.04.06
[Unity] 셰이더 깨지는 현상  (0) 2026.04.05
[Unity] 몰랐던 기능 정리  (0) 2026.03.15