FVector::GetSafeNormal2D

MoOrY·2023년 7월 2일
0

언리얼 엔진

목록 보기
26/41
post-thumbnail

https://docs.unrealengine.com/4.27/en-US/API/Runtime/Core/Math/FVector/GetSafeNormal2D/

FVector GetSafeNormal2D
(
    float Tolerance
) const

벡터를 2D로 노말라이즈하여 안전한지 확인하고 변환시켜 준다.

Hit의 Normal을 빨간색으로 표시하고, Hit의 Normal을 GetSafeNormal2D한 것을 파란색으로 표시했을 때,
GetSafeNormal2D한 것은 Z축 값이 0이 되어 2D 벡터가 되는 모습을 확인할 수 있다.

X와 Y값이 바뀐 이유는 정규화 하려면 벡터의 길이를 1로 만들어야 하므로 x^2 + y^2 + z^2 = 1이 되도록 변경한 것

같은 기능을 하는 GetUnsafeNormal2D가 있는데, 이 함수는 벡터의 길이가 0이거나 매우 작은 경우를 고려하지 않는다.
입력 벡터의 길이가 0이거나 매우 작으면 예상치 못한 오류가 생길 수 있는데, 이를 안전하지 않은 경우라고 한다고 한다.

GetSafeNormal2D은 이런 안전하지 않은 상황도 처리할 수 있도록 설계되었다.
입력 벡터가 일정 임계값보다 낮은 경우, 일반적으로 양의 X방향을 가리키는 단위벡터를 반환하여 0으로 나누는 등의 오류를 방지한다.

GetUnsafeNormal2D가 더 빠르지만, 입력 벡터가 0이거나 매우 작은 상황이 아님을 확실하게 확인할 수 있는 상황에서 사용해야 한다.

profile
필기용 블로그입니다.

0개의 댓글