FVector는 언리얼 엔진에서 3D 벡터(Vector)를 나타내기 위한 클래스다. 주로 다음과 같은 상황에서 사용된다.
FVector 변수이름(초기값X, 초기값Y, 초기값Z);
| 변수 | 설명 |
|---|---|
X | X축 값 |
Y | Y축 값 |
Z | Z축 값 |
FVector MyVector(1.0f, 2.0f, 3.0f);
UE_LOG(LogTemp, Warning, TEXT("X: %f, Y: %f, Z: %f"), MyVector.X, MyVector.Y, MyVector.Z);
벡터끼리 더하거나 뺄 수 있다.
FVector VectorA(10.0f, 20.0f, 30.0f);
FVector VectorB(5.0f, 15.0f, 25.0f);
FVector ResultAdd = VectorA + VectorB; // (15.0f, 35.0f, 55.0f)
FVector ResultSub = VectorA - VectorB; // (5.0f, 5.0f, 5.0f)
벡터에 숫자를 곱하거나 나눌 수 있다.
FVector Vector(10.0f, 20.0f, 30.0f);
FVector ResultMul = Vector * 2.0f; // (20.0f, 40.0f, 60.0f)
FVector ResultDiv = Vector / 2.0f; // (5.0f, 10.0f, 15.0f)
벡터의 크기(길이)를 구할 때는 Size 함수를 사용한다.
FVector Vector(3.0f, 4.0f, 0.0f);
float Length = Vector.Size(); // 길이 = 5.0f
참고:
SizeSquared함수는 제곱된 크기를 반환한다. 제곱근 계산을 생략하기 때문에 연산 속도가 더 빠르며, 비교 연산 시 유용하다.
float LengthSquared = Vector.SizeSquared(); // 길이 제곱 = 25.0f
벡터를 단위 벡터(길이가 1인 벡터)로 만들 때 사용한다.
FVector Vector(3.0f, 4.0f, 0.0f);
Vector.Normalize(); // 벡터가 (0.6f, 0.8f, 0.0f)로 정규화됨
| 함수 | 설명 | 예시 |
|---|---|---|
DotProduct | 두 벡터의 내적을 계산 | FVector::DotProduct(A, B) |
CrossProduct | 두 벡터의 외적을 계산 | FVector::CrossProduct(A, B) |
Distance | 두 벡터 간 거리를 반환 | FVector::Distance(A, B) |
GetSafeNormal | 안전하게 정규화된 벡터를 반환 | FVector Normal = Vector.GetSafeNormal(); |
IsNearlyZero | 벡터가 거의 0인지 확인 | Vector.IsNearlyZero() |
Equals | 두 벡터가 거의 같은지 확인 (오차 범위 허용) | VectorA.Equals(VectorB, Tolerance) |
ClampSize | 벡터 크기를 최소, 최대 값으로 제한 | Vector.ClampSize(0.0f, 100.0f) |
정규화된 벡터 사용 여부 확인
벡터 연산에서 방향을 다룰 때는 정규화된 벡터를 사용하는 것이 중요하다. 정규화되지 않은 벡터로 방향을 계산하면 예상치 못한 결과가 나올 수 있다.
IsNearlyZero로 비교하기
부동 소수점 오차로 인해 벡터를 비교할 때는 == 연산자 대신 IsNearlyZero 또는 Equals 함수를 사용하는 것이 좋다.