# Programming Math

## 용어 정리

```
Vec1 = (a1, a2, a3)
Vec2 = (b1, b2, b3)
|Vec1| 은 Vec1의 크기를 의미
```

| 영어             | 한글    | 설명                             |
| -------------- | ----- | ------------------------------ |
| Vector         | 벡터    | 크기와 방향을 가진 것                   |
| Scalar         | 스칼라   | 크기만 가진 것                       |
| Normal Vector  | 법선 벡터 | 평면에 수직인 벡터                     |
| Unit Vector    | 단위 벡터 | 크기가 1인 벡터                      |
| Inverse Vector | 역벡터   | 벡터에 대해 크기는 같고 방향은 반대인 벡터       |
| Dot            | 내적    | 스칼라곱, 주로 점과 직선 사이의 거리를 구하는데 쓰임 |
| Cross          | 외적    | 텐서곱, 주로 법선 벡터를 구하는데 쓰임         |
| Normalize      | 정규화   | 0과 1이하로 데이터의 범위를 일치시키는 것       |

```
Dot       :  Vec1·Vec2 = |Vec1|*|Vec2|*cosθ
Cross     :  |Vec1*Vec2| = |Vec1|*|Vec2|*sinθ
Cross     :  `Vec1*Vec2 = (a2b3-a3b2), a3b1-a1b3, a1b2-a2b1)`
Normalize :  벡터의 정규화는 벡터의 각 요소를 벡터의 길이로 나눔
```

## 어파인 공간

**어파인 공간이란, 점을 마치 벡터처럼 취급함으로써 벡터 공간을 확장한 것이다.**

이러한 어파인 공간일 시 점 Q에서 P를 빼면 PQ-> 라는 벡터가 된다.

어파인 공간에서는 3가지 연산이 가능하다.

* 벡터와 벡터의 덧셈, 뺄셈
* 스칼라와 벡터의 곱셈, 나눗셈
* 점과 벡터의 덧셈, 뺄셈

## vec(3, 4, 5)란?

> 고민하던 2가지가 모두 정답이라는 것을 이해하는데 쉽지 않았음.

3차원 좌표 상의 해당 위치를 뜻하는 Position으로서의 의미도 맞고, 방향을 가진 벡터의 시작점의 위치도 맞음!

예를들어 한 커브의 그래프가 있을 때 그 해당하는 커브의 3, 4, 5에 위치에서 그려지고 있는 커브는 방향이 있음 그 때의 vec(3, 4, 5)는 벡터의 시작점이자, 3차원 좌표상의 점도 맞음

## 방향 벡터?, 점?, 그냥 벡터?

> 벡터는 크기와 방향을 가진 것이다. 즉 점과 점을 빼면 벡터가 나온다. 그 이유는 원점을 기준으로 벡터라고 정의했을 때 벡터와 벡터를 빼면 해당 그 사이의 벡터가 나옴

* 점은 그냥 3차원 좌표 상의 점이다!&#x20;
* 방향 벡터는 0, 0, 0을 기준으로 정의된 벡터이다.
* 그냥 벡터는 해당 Pos 위치에서 위의 설명한 것과 같은 벡터이다.

## 직선의 벡터 표현 (1점을 지나는 벡터)

```
Pos = (x1, x2, x3)
Dir-> = (u1, u2, u3)

Pos + kDir-> = Pos를 지나고 Dir과 평행한 벡터 Vec->

즉 
a-> + pB->
는 a를 지나고 B와 평행한 벡터임
```

### Reference

* [방향 벡터와 평행하고 점 x, y, z를 지나는 직선의 방정식](https://blog.naver.com/at3650/40203761799)

## 방향이 존재하지 않고 스칼라 값만 알고있을 때, 삼각함수를 이용하여 값을 구하기!!

* UI 엔진 단에서 개발이 아니라 기능단에서 개발 진행중에 발생한 이슈

![삼각 함수](https://4041703324-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LczQ5sDwXTyA6y83Msj%2Fsync%2F81ee6de435caa2f32418293cb17ed9aaf071e0e4.svg?generation=1593336570689068\&alt=media)

### Reference

* [WikiPedia](https://ko.wikipedia.org/wiki/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98)

## 공부할 때 참고한 전체 Reference

* <https://lypicfa.tistory.com/298?category=805276>
