본문 바로가기
대학생활/수업

콘텐츠프로그래밍2 4주차 - 스칼라와 벡터, 삼각함수 복습

by se.jeon 2024. 9. 25.
728x90
반응형

수업 공지

다음 주 휴강 / 다다음주 부터 엔진에서 실습 들어감
따라서 금일 수업에서 이론 관련 부분을 전부 끝마칠 예정.

실습은 기본 라이팅을 진행 예정. 언리얼 엔진의 버전은 5.n버전 내에서 아무거나 상관없다.

가상 세계의 표현

컴퓨터는 0과 1로 세계를 표현한다. 사칙연산밖에 하지 못한다.
컴퓨터로 하여금 비주얼을 표현하게 하기 위해 필요한 절차가 있다.
Real world와 Vitrual world는 완전히 다른 세계지만, 가지고 있는 공통점을 이용해서 가짜 세계를 만든다.


가짜 세상으로 렌더링을 표현할거고, 가짜 세상을 쌓아올리기 위해 제일 먼저 체의 공리를 설립했다.
실수를 사용하면 1차원 세상, 복소수를 사용하면 2차원 세상.

아핀공간과 같은 개념도 있지만, 수업 중에는 다루지 않을 예정.

 

가짜 세상은 논리적으로 완벽해야 한다.

그러기 위해 세상을 구성하는 요소들을 연산할 수 있어야 시스템을 만들 수 있다.

 

1차원의, 논리로 만들어진 완벽한 시스템

- 항등원

- 역원

- 덧셈 곱셈

- 교환 결합 분배

 

공간 안에서 닫혀있는 시스템을 만들어야 가짜 세상의 시스템을 구축할 수 있다.

 

1차원으로 할 수 있는 것은 한정적이기 때문에 2차원으로 확장한다.

그러기 위해 벡터 공간을 사용하게 된다.

벡터와 벡터의 곱셈, 벡서와 스칼라의 덧셈을 사용하여 새로운 세계를 구축한다.

선형 결합을 사용하면 어떤 경우에도 벡터가 발생하게 된다.

 

우리가 만들고 싶은 벡터공간 안의 모든 벡터를 만들기 위해서 선형독립인 벡터와의 결합이 필요하다.

이를 판단하기 위해서 a가 0이 아닐때(영벡터)를 기준으로 잡는다.

 

선형의존인 벡터가 가지는 문제점

특정 선상에 있는 벡터밖에 만들 수 없기 때문에 공간을 전부 커버할 수 없다.

노션 수식 편집기 사용법

수식 사용법

 

https://katex.org/docs/supported.html

 

KaTeX – The fastest math typesetting library for the web

Simple API, no dependencies – yet super fast on all major browsers.

katex.org

그래픽스를 위한 선형대수

기본적인 수학적 연산을 활용하여 다양한 그래픽을 표현할 수 있다.

그래픽 엔진을 만들거나, 쉐이더에 활용하는 등 다양한 활용을 할 수 있다.

 

선형 독립인 친구들이 있을 때, 기저라는 집합에 있는 요소인 기저벡터의 개수에 따라 세계의 차원이 정해진다.

2개를 사용하여 만드는 세계는 평면(Plane) 형태의 2차원 공간이다.

 

3개의 스칼라가 존재하는 (a, b, c) 형태의 벡터는 인지적으로 봤을 때 3차원 공간에 있는 벡터이지만,

덧셈 곱셈을 위해서는 차원이 같아야 하지만, 여러가지 스칼라가 존재하는 경우에도 기저의 개수에 따라 결합이 되면서 차원이 결절된다. 스칼라가 여러개라고 하더라도, 벡터가 두개라면 실제적으로는 평면 안에 존재하는 형태를 가지게 된다.

평면 밖을 벗어나려면 선형 결합을 하는 벡터가 하나 더 필요하고, 3차원 공간을 만들어주어야 한다.

삼각함수

삼각함수를 이야기 할 땐 반지름이 1인 원을 우선 그리자.

삼각함수에서 sin은 y, cos은 x를 의미한다.

따라서 단위원에서의 좌표는 (cos 세타, sin 세타)의 형태를 가진다.

 

단위원에서의 삼각함수

therefore를 사용하여 그러므로를 표현 해 줄 수 있다.

 

반지름 r인 원에서의 삼각함수

 

피타고라스의 정리에 의해

 

x, y를 Linear Combination으로 보자.

두 개의 기저벡터만 있고, 스칼라만 있으면 무한으로 생성 가능하다.

하지만 표준 기저벡터를 기준으로 본다.

 

선으로 구성된 벡터를 조합해서 x, y를 만드는 것이 전형적인 방식이다.

전통적으로 벡터 공간에서 표현하는 방법이 있고, 거리 r과 각을 의미하는 세타로 표현하는 방법이 있다.

 

 

여기서의 cos, x축은 각을 의미하고. sin 값은 y를 의미한다.

sin과 cos의 개념을 이해하고 내적과 외적에 대해 이해해야 그래픽스에 대해 이해할 수 있다.

 

Desmos - 그래핑 계산기

https://www.desmos.com/calculator?lang=ko

 

Desmos | 그래핑 계산기

 

www.desmos.com

 

두 개의 표준 기저벡터로 만드러진 벡터 공간에서 삼각함수를 그래프로 표현 해 보는 실습 진행.

 

 

90도의 차이가 굉장한 것을 만들어낸다.

sin과 cos는 본질이 같아 보이지만, 90도 간격으로 배치했더니 성격이 완전히 달라지게 된다.

sin 검정색과 cos 빨간색의 차이를 보자. 검정색은 좌우대칭이 아닌 점대칭이지만, 빨간색은 좌우대칭의 형태를 가진다.

 

sin과 cos의 특징

 

cos 함수가 0이 되는 각은 90도와 20도이다.

Orthogonal, 직각이 된다는 것을 직교한다고 표현한다.

직교하면 cos는 0이 된다.

 

 

cos 함수는 -90도부터 90도까지 양수, 나머지는 음수

0을 기준으로 왼쪽과 오른쪽은 양수, 나머지는 음수이다.

각도법과 호도법

 

완벽한 피자는 모든 반지름의 길이가 같은 피자이다.

 

라디안(rad)과 도(degree)는 각도를 나타내는 두 가지 단위이다.

1라디안 =  57.296...

  1. π\pi 라디안은 180도와 같다. 그래서 간단히 π=180∘\pi = 180^\circ로 표현할 수 있다.
  2. 1 라디안은 약 57.3도인데, 이를 수식으로 표현하면 1 rad=π1801 \, \text{rad} = \frac{\pi}{180}.
  3. 특별한 조건이 없다면, 0도와 360도는 항상 2π2\pi 라디안으로 표현된다.

내적

그냥 스칼라의 값들을 단순하게 곱해주는 연산은 유도되는 것이 하나도 없다. 그래서 채택된 것이 내적이다.

가운데 점을 찍는 것을 통해 내적을 표현한다.

내적은 삼각함수의 cos과 관련이 있다. 내적의 규칙에 대해서 이야기를 할 예정.

 

(a,b)라는 u벡터와 (c,d)라는 v벡터의 내적은 ac+bd

내적의 결과물은 스칼라이다. 스칼라는 측정에 대한 결과값.

스칼라는 체의 성질에 의해서 내적도 교환법칙이 성립된다.

 

 

자기자신에게 내적을 하는 것은 크기의 제곱이 되는 것이다.

 

리얼타임이 되려면 수학 연산이 빠르게 진행되어야 한다.

그 중에서 가장 시간을 많이 잡아먹는 것이 루트의 계산과 cos세타이다. 이들이 퍼포먼스를 깎는 경향이 있다.

 

가장 빠른 1순위는 아무래도 덧셈과 곱셈.

내적은 덧셈과 곱셈으로만 이루어져 있기 때문에 빠르게 처리할 수 있다.

그리고 이러한 개념은 쉐이더에서 중요한 역할을 한다.

 

내적의 성질 (시간 부족으로 인한 빠른 요약)

- 같은 벡터를 내적할 경우 백터 크기의 제곱이 된다.

- 다른 친구를 내적할 경우 u벡터와 v벡터의 cos세타가 결과값으로 나온다.

내적 유도의 경우 강의시간 부족의 사유로 생략하게 되었다.

 

 

cos함수가 가지는 성질. 직교하면 무조건 0이 된다.

그래서 내적값이 0이면 그 벡터는 서로 직교하는 것이다.

두 벡터의 크기가 1(단위벡터)이면 u와 v의 내적은 cos세타가 된다.

 

게임 엔진에서 빛의 방향이나 자신이 향하는 방향과 같은 경우 일부로 1로 만들어서 계산하기도 한다.

1로 만들면 바로 cos세타가 되기 때문이다. (진짜 그런지 과정 관련 이야기를 함)

 

 

물체가 내 앞에 있는지를 어떻게 알 수 있을까.

물체와의 벡터를 내적해서 나온 사잇값이 양수인지, 0인지, 음수인지를 통해 알 수 있다.

물체가 앞에 있는 경우 양수가 나왔다면 전방, 음수가 나왔다면 후방인 것으로 구분할 수 있다.

과제

https://se-jeon.notion.site/4-1194065cf2bc802eb34cf176f7b67bca?pvs=4

 

4주차 과제 | Notion

과제

se-jeon.notion.site

728x90
반응형