본문 바로가기
Computation Geography

1. 벡터의 기본 (덧셈, 뺄셈, Magnitude, Normalize)

by SimonLee 2023. 9. 2.

Vector는 크기와 방향을 표현하는 물리량이다.

 

벡터에는 위치는 달라도 방향과 크기가 같으면 동일한 벡터라고 칭합니다.

 

기학적으로는 다음과 같이 표기 합니다.

대수적으로는 다음과 같이 표기 합니다.

가로로 나열 된 것이 열벡터, 행으로 나열된 것은 행벡터 입니다.

 

벡터의 덧셈과 뺄셈은 각 원소끼리 쌍쌍히 더해주거나 빼주면 됩니다.

A (2, 3) + B ( 3, 3) = C (5, 6)

A (2, 3) - B (3, 3) = C (-1, 0)

 

위에서 위치는 달라도 방향과 크기가 같으면 동일한 벡터라고 위에서 했습니다.

기준점이 원점으로 생각하면 됩니다.

그런데 기준점이 원점이 아닌 다른 벡터는 뭐라고 표현 할까요?

 

위치 벡터라고 말합니다.

0> 위치 벡터를 표현 하는 방법은 아래와 같습니다.

 

A(3,1), B(1,3) 두 점을 잇는 벡터를 표현하는 방법입니다.

 

1) 원점 벡터를 시작점으로 한 벡터 A, B 를 표현.

2) 벡터의 뺼셈 연산을 한다. ( B - A )

2-1)  A --> B 방향은 B -  A

2-2) B --> A 방향은 A - B

3) 원점 중심으로 생성된 벡터를 A 위치에 가져다 놓는다.

 

생성된 C 벡터의 시작 위치를 원점에서 A의 끝점 (3, 1)로 옮긴다고 생각하면

기하적으로 다음과 같은 형태가 됩니다. 

 

 

1> 벡터 U의 크기 (Magnitude) 는 다음과 같이 구합니다.

 

2> 노멀라이즈 방법은 다음과 같습니다.

각 벡터의 원소들을 벡터의 크기로 각 각 나누어 줍니다.

 

노말라이즈된 벡터를 단위 벡터라고 합니다.

단위 벡터 U(x, y, z)의 크기를 구해 보면, 아래와 같은식으로 1 이 됩니다.

그래서 단위 벡터의 크기는 1 입니다.

 

또 하나 아시면 좋은게 있습니다.

차원의 기저(basis)라는 말이 있습니다.

유니티같은 엔진프로그램에서 월드를 보면 우측상단에 X, Y, Z 벡터의 방향이 표시되어 있습니다.

요놈이 월드좌표계의 기저라고 합니다.

 

월드 좌표계 기저(basis)는 중요한 성질이 2가지가 있는데, 

1) 각 좌표계의 축마다 수직이고 (Ortho),

2) 기저 축은 전부 단위 벡터 입니다. (Normalized Vector)

 

그래서 기저는 orthonormal 이라고 표현합니다.

 

월드좌표계 기저 단위 벡터 {a, b, c}가 있다고 해봅시다.

a, a 내적한 값은 1 입니다.

a, b 내적한 값은 0 입니다.

 

벡터의 크기와 노말라이즈 코드 입니다.

public float Magnitude()
{
    double value = 0f;
    for (int i = 0; i < values.Length; i++)
    {
        value += Math.Pow(values[i], 2.0f);
    }
    return (float)Math.Sqrt(value);
}

public Vector3f Normalize()
{
    var mag = Magnitude();
    for (int i = 0; i < values.Length; i++)
    {
        values[i] /= mag;
    }
    return this;
}

'Computation Geography' 카테고리의 다른 글

5. 선 (Line), 선과 선의 교차점 체크하기  (0) 2023.09.09
4. 벡터의 Orientation  (2) 2023.09.09
3. 외적 ( Cross Product )  (0) 2023.09.01
2. 내적 ( Dot Product )  (0) 2023.08.31
0. Computation Geography..  (0) 2023.08.31