# 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 엔진 단에서 개발이 아니라 기능단에서 개발 진행중에 발생한 이슈

![삼각 함수](/files/-LhJO_fKBVs-1LJX2tiZ)

### Reference

* [WikiPedia](https://ko.wikipedia.org/wiki/삼각함수)

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/math.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
