목록분류 전체보기 (150)
개발하는 리프터 꽃게맨입니다.
1. 3차원 공간의 설계3차원의 수학이 2차원과 다른 점은 3개의 축을 사용한다는 것이다.그렇기 때문에 3차원에서의 변환은 2차원보다 더 복잡하며 고려해야 할 점도 많다. 3D로 표현된 사실적인 게임을 만들기 위해서는 3차원 공간의 수학을 이해해야 한다.먼저 3차원 공간을 구성하는 좌표계를 먼저 정의하도록 하자. 3차원 공간은 2차원의 공간에 새로운 축을 추가해야 하는데, 이를 어떻게 설정하느냐에 따라 공간의 체계가 달라진다. 3차원 공간을 설게하는 방법은 크게 두 가지로 구분된다. 기본적으로 가로를 x축, 세로를 y축모니터를 기준으로 앞뒤를 z축으로 둔다. 이 때,나머지 한 축이 모니터에서 나오는 체계를 '오른손 좌표계'나머지 한 축이 모니터 뒤편으로 향하는 체계를 '왼손 좌표게'라고 한다. 좌표계를 ..
더보기#include #include using namespace std;class Player{public:Player(string name): mName(name){}string GetName() const{return mName;}private:string mName;};struct MyEvent{void (*eventFunction)(void*, void*);void* lParam;void* rParam;};class EventProcessor{public:EventProcessor() = default;~EventProcessor() = default;void Push(MyEvent eventStruct){mQueue.push(eventStruct);}void AllExecute(){while ..
세 점의 결합아핀 결합을 이용하면 스칼라 계수의 범위에 따라 직선, 반직선, 선분 등 다양한 종류의 선을 만들 수 있었다.그렇다면 세 점을 결합하는 경우는 어떻게 될까?세 점 P1, P2, P3를 결합하는 경우 스칼라는 3개로 늘어나고 세 스칼라의 합은 1이 되어야 한다.위 식을 점에서 점을 빼는 수식으로 바꿔 전개하면 다음과 같다.여기서 각 괄호를 u, v, w 벡터로 치환하면 다음과 같이 벡터로 구성된 수식이 만들어 진다.앞서 살펴본 바와 같이 벡터 u, v가 서로 선형 독립의 관계라면 벡터 w는 2차원 벡터 공간 R²에 존재하는 모든 벡터를 생성할 수 있다.따라서 세 점의 아핀 결합은 평면의 모든 점을 만들어낸다. 여기서 스칼라 s, t의 값 범위를 [0, 1] 로 고정시켜보자.그러면 그러면 아래..
1. 벡터의 내적벡터의 내적 Dot Production 은 같은 차원의 두 벡터가 주어졌을 때,벡터를 구성하는 각 성분을 곱한 후 이들을 더해 스칼라를 만들어내는 연산이다.기호는 가운뎃점 ㆍ을 사용한다. 어떤 2차원 벡터 u (a, b), v (c, d) 가 있을 때1) 내적의 성질내적은 스칼라의 곱셈과 덧셈으로 구성되어 있으므로 교환법칙이 성립한다.결합 법칙은 성립하지 않는다.덧셈에 대해서 분배 법칙이 성립한다.서로 같은 벡터를 내적하면 벡터의 크기를 제곱한 결과가 나온다.내적의 성질은 모든 차원의 벡터에 대해서 동일하게 적용된다.2) 내적과 삼각함수와의 관계두 벡터 u, v가 있을 때, 두 벡터의 내적 값은 두 벡터 사잇각에 대한 cos 함수와 비례하는 특징을 가진다. 두 벡터 u, v의 사잇각을 세..
기존 이동 연산의 경우 행렬의 덧셈으로 구현했다.일반적인 행렬로는 이동에 대응하는 선형 변환을 구현할 수 없기 떄문이다. 해당 포스팅에서는 행렬 곱으로 이동 연산을 구현하는 방법에 대해서 알아본다.행렬 곱으로 이동 연산을 구현하기 위해서는 특별한 방법이 필요하다. 그것은 바로 아핀 공간을 사용하는 것이다.아핀 공간을 이용하면 모든 변환에 대해 선형 변환,행렬곱을 지원할 수 있다. 우리는 아핀 공간으로부터 가상 세계의 기반을 완성시킬 것이다.1. 이동 변환을 위한 아핀 공간2x2 정방 행렬의 곱셈으로는 2차원 평면에서의 이동을 구현할 수 없다.임의의 벡터 (x, y)를 (a, b) 만큼 이동시키는 것은(x+a, y+b) 와 같은 행렬 덧셈으로 구현할 수 있기 때문이다. 다음과 같은 정방행렬 A는 존재하지 ..