Make Unreal REAL.
article thumbnail
행렬의 설계

이득우의 게임 수학 벡터 공간 V를 구성하는 두 표준 기저 벡터 (1, 0), (0, 1)이 선형 변환을 통해, 벡터 공간 W의 (-1, 1), (-1, 3)에 대응되어 변환된다고 해보자. 공간 V의 표준 기저 벡터의 선형 결합으로 생성되는 벡터 v는 공간 W의 벡터 w로 변환된다. v = x·(1, 0) + y·(0, 1) = (x, y) w = x·(-1, 1) + y·(-1, 3) = (-1·x + -1·y, 1·x + 3·y) V의 벡터 v를 W의 벡터 w로 변환시키는 선형 변환 행렬은, V의 표준 기저 벡터 e1(1, 0)과 e2(0, 1)가 변환된 W의 표준 기저 벡터 e1`(-1, 1)과 e2`(-1, 3)의 열벡터로 구성된다는 것을 알 수 있다. 이를 활용해 크기 변환 행렬(Scale tr..

article thumbnail
행렬

이득우의 게임 수학 벡터는 한 줄로 구성된 행렬로 표현되며, 행 벡터 또는 열 벡터로 나타낸다. 선형 변환을 표현할 때는 행과 열의 크기가 같은 정방행렬(Square Matrix)을 사용한다. 아래의 회전 변환 행렬의 경우, 각각 행 벡터와 열 벡터로 나타내면 다음과 같다. 행 벡터 cosθ, sinθ -sinθ, cosθ 열 벡터 cosθ, -sinθ sinθ, cosθ 행렬의 덧셈, 뺄셈은 두 행렬의 크기가 같은 경우에만 성립한다. 행렬의 스칼라배 연산은 다음과 같다. 행렬의 전치 연산은 위 첨자 T로 표시하며, 행과 열을 바꾸는 연산이다. m x n 크기 행렬에 전치 연산을 수행하면, n x m 크기의 행렬이 된다. 정방 행렬 중에 주 대각선(Principal diagonal) 원소들을 제외하고, ..

article thumbnail
선형성과 선형 변환

이득우의 게임 수학 2차원 좌표계에서 원점을 지나는 직선은 선형성(Linearity)을 갖는다. 선형성을 갖는 함수는 다음 두 가지를 만족해야 한다. 1. 가법성(Superposition) f(x1 + x2) = f(x1) + f(x2) 2. 1차 동차성(Homogeneity) f(k·x) = k·f(x) 이차 함수는 선형성을 갖지 않는다. f(x1 + x2) = x1² + x2² + 2·x1·x2 f(x1) + f(x2) = x1² + x2² 일차 함수라고 하더라도, 원점을 지나지 않는다면 선형성을 갖지 않는다. f(x1 + x2) = a·(x1 + x2) + b f(x1) + f(x2) = a·x1 + a·x2 + 2·b 선형성은 단지 곧게 뻗은 성질이 아니라, 두 집합의 순수한 비로 구성된 1차적 ..

article thumbnail
극좌표계

이득우의 게임 수학 이동, 크기 조정과 달리 회전은 x와 y가 함께 영향을 받는 작업이기 때문에, 데카르트 좌표계로 회전을 구현하면 변화를 매번 계산해야 하는 번거로움이 있다. 따라서, 회전 동작을 편리하게 구현하기 위해 설계된 좌표계가 바로 극좌표계(Polar coordinate system)다. 원점으로부터의 거리 r과 각 θ로 표현된다. 데카르트 좌표계로 표현된 벡터 v = (x, y)를 극좌표계로 변환하면 다음과 같다. 방사형으로 채워지는 UI 쿨타임 효과 등이 대표적인 극좌표계의 활용 예이다. Vector2 polarV = v.ToPolar(); polarV.rad += 3.f; Vector2 cartesianV = polarV.ToCartesian();

article thumbnail
삼각함수의 역함수

이득우의 게임 수학 역함수가 존재하기 위해서는 정의역의 모든 원소와 공역의 모든 원소가 일대일로 대응되는 전단사 함수여야 한다. 따라서 sin 함수의 경우, 범위를 [-90°, 90°] 구간으로 정의역의 범위를 제한해야 한다. cos 함수의 경우, 범위를 [0°, 180°] 구간으로 정의역의 범위를 제한해야 한다. tan 함수의 경우, 범위를 (-90°, 90°) 구간으로 정의역의 범위를 제한해야 한다. tan 함수는 θ가 -90°, 90°일 때 y값이 존재하지 않기 때문에 제외해야 한다. tanθ = y / x이기 때문에, arctan 함수를 활용하면 벡터의 각도를 알 수 있다. θ = arctan(y / x) 그런데 이때, y / x의 값을 분수로 전달하기 때문에 사분면을 판별할 때 문제가 발생한다...

article thumbnail
삼각함수를 활용한 벡터의 회전

이득우의 게임 수학 벡터를 더하거나 늘리는 동작은 x축, y축이 서로 독립적으로 적용된다. 종속적이지 않고 각각 따로 계산해도 된다. 하지만 회전은 x, y 값이 서로 영향을 미치기 때문에, 독립적으로 계산할 수 없다. 실벡터 공간 R²의 표준 기저 벡터 e1 (1, 0), e2 (0, 1)를 이용해 공간에 있는 모든 벡터를 표현할 수 있다. 각각을 θ만큼 회전시킨 좌표는 다음과 같다. 임의의 벡터 v (1, 1) = e1 (1, 0) + e2 (0, 1)를 θ만큼 회전시킨 v'의 좌표는 다음과 같다. (cosθ, sinθ) + (-sinθ, cosθ) (cosθ - sinθ, sinθ + cosθ) 이와 같은 원리로, 벡터 u (x, y) = x·e1 + y·e2를 θ만큼 회전시킨 u'의 좌표는 다음과..

검색 태그