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 |