Make Unreal REAL.
article thumbnail
브레젠험 알고리즘(Bresenham's algorithm)

이득우의 게임 수학 직선의 방정식 L(a) = a·P₁ + (1 - a)·P₂를 이용해 모니터에 선을 그리면 하나의 픽셀에 다수의 벡터가 대응되기 때문에 비효율적이다. 브레젠험 알고리즘은 정수만을 사용해 화면에 선을 그리는 효율적인 알고리즘으로, 화면을 8등분 영역으로 구분해 각 영역별로 그려내는 방식을 사용한다. y축이 아래를 향하는 스크린 좌표계에서 구현되므로, 회전의 방향은 시계 방향이 된다. 1팔분면(Octant)에 대해 생각해보자. 1팔분면은 [0°, 45°]의 범위를 가지며, 이 영역에 존재하는 모든 직선의 기울기는 1을 넘을 수 없다. 그러므로 선을 그리기 위한 진행은 평행하거나, 한 칸만 아래로 내려가는 특징이 있다. 시작 위치 (x₀, y₀)에서 오른쪽으로 한 칸 이동했을 때 될 수 있는..

article thumbnail
스크린 좌표계(Screen coordinate system)

이득우의 게임 수학 모니터에 선을 그리기 위해서는 모니터의 좌표계를 알아야 한다. 양수, 음수의 연속된(Continuos) 실수의 집합으로 구성된 데카르트 좌표계와 달리, 모니터 화면의 좌표계는 0 이상의 이산적인(Discrete) 정수의 집합으로 구성된다. 또한, y축의 방향이 아래쪽을 향한다는 점도 다르다. 이러한 모니터 화면의 좌표계를 스크린 좌표계라고 한다. 스크린 좌표계를 통해 화면에 무언가 표현하기 위해서는 반드시 색상이 함께 지정되어야 한다. 이렇게 스크린 좌표와 색상에 대응하는 화면 구성의 최소 단위를 픽셀(Pixel)이라고 한다. 따라서 벡터를 화면의 점으로 최종 표현하기 위해서는, 데카르트 좌표계로 표현된 실수 벡터를 정수로 변환 후 색상을 부여하는 작업이 필요하다. 이러한 변환 작업을..

article thumbnail
아핀 결합(Affine Combination)

이득우의 게임 수학 아핀 공간의 점은 마지막 차원의 값이 1이어야 하기 때문에, 점과 점은 더하면 2가 되어 더할 수 없다. 하지만, 두 점 P₁(x₁, y₁, 1), P₂(x₂, y₂, 1)에 각각 스칼라 a, b 를 곱해 더하면 a·P₁ + b·P₂ = (a·x₁ + b·x₂, a·y₁ + b·y₂, a + b)가 된다. 이때 a + b = 1의 조건을 유지한다면, 점과 점의 선형 결합을 통해 새로운 점을 만들 수 있고 이런 결합을 아핀 결합이라고 한다. 아핀 결합은 선형 결합 중에서도, 계수들의 합이 1인 특정한 결합이다. 두 점에서 생각해보면, 첫 번째 계수를 a라고 할 때 두 번째 계수는 (1 - a)가 된다. 그러므로 아핀 결합을 통해 생성된 점들 사이에는 특정한 관계가 형성되고, a값을 통해..

article thumbnail
아핀 공간의 구성 요소

이득우의 게임 수학 아핀 공간의 정의에 따라, 아핀 공간에 속한 물체의 마지막 차원의 값은 항상 1이어야 한다. 점(Point) 아핀 공간에서 마지막 차원의 값이 1인 원소를 점이라고 한다. 따라서, 점은 행렬의 곱을 통해 이동이 가능하다. 2차원 아핀 공간에서의 점 : (x, y, 1) 3차원 아핀 공간에서의 점 : (x, y, z, 1) 합성 함수의 특성을 갖는 행렬 곱의 장점을 살리기 위해, 의도적으로 벡터 공간에서 마지막 원소의 값을 1로 제한한 부분 공간인 아핀 공간을 사용한다. 그런데 아핀 공간의 원소끼리 벡터 합 연산으로 점을 이동시키면, 마지막 원소의 값이 2가 되어 아핀 공간에 닫혀있지 않게 된다. 이를 위해 아핀 공간은 이동 벡터(변위 벡터, Displacement vector)라는 개..

article thumbnail
아핀 공간(Affine space)

이득우의 게임 수학 2 x 2 정방 행렬의 곱으로 구현할 수 있었던 크기, 회전 변환과 달리 이동 변환은 그렇지 않다. 임의의 벡터 (x, y)를 (a, b)만큼 이동시킨다고 할 때, (x, y) + (a, b) = (x + a, y + b) A·(x, y) = (x + a, y + b)를 만족하는 정방 행렬 A는 존재하지 않는다. 이동 변환과 같이 표준 기저 벡터의 원점을 이동시키는 변환이 행렬이 되기 위해서는 선형성을 만족해야 한다. 이동 이후의 벡터 공간 W의 기저 벡터가 원점으로부터 출발하지 않으므로, 선형성을 만족하지 않기 때문이다. x값만 이동하는 방법을 생각해보자. y값을 1로 제한한 특정한 상황에서 x축으로 a만큼 전단 변환을 적용하면, 이동 변환을 구현할 수 있다. y를 1로 제한하면, ..

article thumbnail
역행렬

이득우의 게임 수학 행렬은 본질적으로 함수의 성질을 지니기 때문에, 항등 함수에 대응하는 항등 행렬(Identity Matrix)과 역함수에 대응하는 역행렬(Inverse Matrix)이 존재한다. 항등 행렬 원 공간의 변화 없이 동일한 공간으로 유지하는 변환 따라서, 변환된 공간의 표준 기저 벡터는 원 공간의 표준 기저 벡터와 동일하다. 항등 행렬 I 1, 0 0, 1 역행렬 역원의 개념과 같게, A·T = T·A = I를 만족하는 T이다. A의 역행렬 T = A⁻¹로 표시한다. 벡터 공간 V가 선형 변환된 벡터 공간 W가 존재할 때, W를 다시 원 벡터 공간 V로 되돌리는 선형 변환이다. 행렬식(Determinant) 어떤 함수가 역함수를 갖기 위해서는 전단사함수여야 한다. 마찬가지로 어떤 행렬이 역..

검색 태그