본문 바로가기
Unity 유니티

Unity 유니티 벡터와 벡터의 연산 Vector!!

by 지나팩 2024. 5. 21.

유니티(Unity)에서 벡터(Vector)는 3D 공간에서 위치, 방향, 크기 등을 나타내는 중요한 개념입니다. 벡터는 Unity의 Vector3 구조체를 사용하여 표현됩니다. 또한, 2D 게임을 위해 Vector2 구조체도 사용됩니다. 이 설명에서는 주로 Vector3를 중심으로 벡터의 개념과 사용 방법을 설명하겠습니다.

벡터(Vector)란?

벡터는 크기와 방향을 가진 물리량입니다. Unity에서 벡터는 주로 위치(Position), 이동(Movement), 방향(Direction), 힘(Force) 등을 나타내는 데 사용됩니다.

Vector3

Vector3는 3차원 공간에서의 벡터를 나타내는 구조체입니다. Vector3 객체는 x, y, z의 세 가지 구성 요소를 가집니다.

생성 및 초기화

 

 

벡터 연산은 Unity에서 3D 공간에서의 위치, 방향, 이동 등을 다루는 데 매우 유용합니다. 주요 벡터 연산에는 덧셈, 뺄셈, 스칼라 곱셈, 내적, 외적 등이 있습니다. 각 연산에 대해 자세히 설명하겠습니다.

 

 

 

1. 벡터 덧셈(Vector Addition)

벡터 덧셈은 두 벡터의 대응하는 성분을 더하는 연산입니다.

여기서 벡터 ab의 각 성분을 더한 결과가 벡터 sum입니다.

 

2. 벡터 뺄셈(Vector Subtraction)

벡터 뺄셈은 두 벡터의 대응하는 성분을 빼는 연산입니다.

벡터 a에서 벡터 b의 각 성분을 뺀 결과가 벡터 difference입니다.

 

3. 스칼라 곱(Vector Scalar Multiplication)

스칼라 곱은 벡터의 각 성분에 스칼라 값을 곱하는 연산입니다.

여기서 벡터 a의 각 성분에 2를 곱한 결과가 벡터 scaled입니다.

 

4. 벡터 나누기(Vector Division by Scalar)

벡터 나누기는 벡터의 각 성분을 스칼라 값으로 나누는 연산입니다.

벡터 a의 각 성분을 2로 나눈 결과가 벡터 divided입니다.

 

 

00000

 

5. 내적(Dot Product)

내적은 두 벡터의 대응하는 성분을 곱한 후, 그 결과를 모두 더하는 연산입니다. 내적은 두 벡터 사이의 각도를 구하거나, 두 벡터가 얼마나 평행한지를 판단하는 데 사용됩니다.

내적의 계산식은 다음과 같습니다.

𝑎⋅𝑏=(𝑎𝑥⋅𝑏𝑥)+(𝑎𝑦⋅𝑏𝑦)+(𝑎𝑧⋅𝑏𝑧)

위 코드에서 dotProduct는 32입니다.

 

6. 외적(Cross Product)

외적은 두 벡터가 이루는 평면에 수직인 벡터를 구하는 연산입니다. 외적은 주로 3D 그래픽에서 법선 벡터를 계산할 때 사용됩니다.

외적의 계산식은 다음과 같습니다.

𝑎×𝑏=(𝑎𝑦⋅𝑏𝑧−𝑎𝑧⋅𝑏𝑦,𝑎𝑧⋅𝑏𝑥−𝑎𝑥⋅𝑏𝑧,𝑎𝑥⋅𝑏𝑦−𝑎𝑦⋅𝑏𝑥)

위 코드에서 crossProduct(-3, 6, -3)입니다.

 

7. 벡터의 크기(Magnitude)

벡터의 크기는 벡터의 길이를 나타내며, 벡터의 각 성분의 제곱합의 제곱근으로 계산됩니다.

벡터 a의 크기 계산식은 다음과 같습니다.

 

위 코드에서 magnitude는 약 3.7416입니다.

 

 

 

8. 벡터 정규화(Normalization)

벡터 정규화는 벡터의 크기를 1로 만드는 연산입니다. 정규화된 벡터는 같은 방향을 가지지만 크기는 1입니다.

정규화된 벡터 normalized는 크기가 1인 단위 벡터입니다.

 

9. 두 점 사이의 거리(Distance between Points)

두 점 사이의 거리는 두 벡터의 차이의 크기로 계산됩니다.

두 점 ab 사이의 거리는 약 5.1962입니다.

 

10. Lerp (Linear Interpolation)

벡터의 선형 보간은 두 벡터 사이를 t 비율로 보간하는 연산입니다.

lerpResult는 벡터 a와 b의 중간 점입니다.

 

벡터 연산은 Unity에서 물체의 이동, 방향 설정, 물리 계산 등에 필수적인 도구입니다. 벡터의 덧셈, 뺄셈, 스칼라 곱셈, 내적, 외적 등의 연산을 통해 복잡한 3D 공간 내의 동작을 쉽게 처리할 수 있습니다. 벡터 연산을 잘 이해하고 활용하면 더욱 정교하고 동적인 게임을 개발할 수 있습니다.

 

벡터에 대해선 각각 따로 예제를 통해 더 알아보도록 하겠습니다.

 

댓글