본문 바로가기
Computer Science/게임 수학

게임 수학 | 2부 콘텐츠 제작 기초 | 06장 아핀 공간

by continue96 2023. 2. 17.

06장 아핀 공간: 움직이는 가상 세계의 구축

 

06장 아핀 공간: 움직이는 가상 세계의 구축

6.1 아핀 공간

  • 벡터 공간에서 이동 변환을 행렬 곱으로 표현하기 위해서 마지막 차원 값을 1로 한정한 부분 공간을 아핀 공간(affine space)라고 한다.
    • 원래 행렬 곱으로는 이동 변환을 표현할 수 없다. 하지만 차원 값이 항상 1인 새로운 차원을 도입하면 가능하다.
    • 이동 변환 행렬(translate transformation matrix)

그림 6-1 이동 변환 행렬

 

  • 이동 변환 행렬은 선형 변환의 일종인 전단 변환을 응용한 것이다.
    • 1차원에서 y = 1이라는 조건에서 a만큼 미는 전단 변환은 x + a로 나타난다.
    • 2차원에서 z = 1이라는 조건에서 (a, b)만큼 미는 전단 변환은 (x + a, y + b)로 나타난다.

 

  • n차원에서 n + 1차원으로 차원을 높여 설계한 선형 변환을 아핀 변환(affine transformation)이라고 한다.
    • 크기 변환(scale), 회전 변환(rotation), 이동 변환(translate)

그림 6-2 크기 변환(S), 회전 변환(R), 이동 변환(T)

 

6.2 아핀 공간의 구성 요소

6.2.1 점

  • 아핀 공간의 원소는 점(point)으로 마지막 차원 값이 항상 1이다.
  • 점은 물체를 표현하고 위치를 지정하는 데 사용한다. 
    • 2차원 공간에서 점은 항상 (x, y, 1)의 형태여야 한다.
    • 3차원 공간에서 점은 항상 (x, y, z, 1)의 형태여야 한다.

 

 6.2.2 이동 벡터

  • 아핀 공간의 벡터는 이동 벡터(변위 벡터, displacement vector)로 마지막 차원 값이 항상 0이다.
  • 이동 벡터는 물체를 움직이는 데 사용한다. 
    • 아핀 공간 위의 점 P1의 좌표가 (x1, y1, 1)이고 점 P2의 좌표가 (x2, y2, 1) 일 때, 두 점을 빼서 만든 이동 벡터의 마지막 차원 값은 x, y 값과 무관하게 항상 0이 되기 때문이다.

그림 6-3 점의 영역과 이동 벡터의 영역

 

 6.2.3 아핀 공간의 성질

  • 점과 벡터 사이에는 다음과 같은 연산 규칙이 성립한다.
    • 점 - 점 = 벡터
    • 점 + 벡터 = 점
    • 벡터 + 벡터 = 벡터
    • 점 + 점은 성립하지 않는다.

 

6.3 아핀 결합

  • 여러 개의 점을 결합해 새로운 점을 생성하는 수식을 아핀 결합(affine combination)이라고 한다.
    • 2차원 평면 위의 임의의 두 점 P1(x1, y1, 1)과 P2(x2, y2, 1)에 각각 스칼라 a, b를 곱한 선형 결합이 되려면 a + b가 1이 되어야 한다.

 

 6.3.1 두 점의 결합

  • 두 점을 P1, P2로 지정하고 아핀 결합으로 생성된 점을 P'으로 지정하면 다음 수식이 성립한다.
    • a · P1 + (1 - a) · P2 = P'

그림 6-4 아핀 결합으로 생성된 새로운 점

 

  • 위의 식에 모든 실수 a를 대입하면 직선의 방정식을 얻을 수 있다.
    • L(a) = a · P1 + (1 - a) · P2
    • -∞ < a < ∞일 때, 두 점의 양쪽 방향으로 무한히 뻗어나가는 직선(line)이 된다.
    • 0 ≤ a < ∞일 때, 지정한 위치에서 한쪽 방향으로만 뻗어나가는 반직선(ray)이 된다.
    • 0 ≤ a ≤ 1일 때, 시작점과 끝점의 위치가 정해진 선분(line segment)이 된다.

그림 6-5 매개변수 범위에 따른 직선의 종류

 

6.4 선 그리기 알고리즘

 6.4.1 벡터를 모니터의 점으로 표현

  • 스크린 좌표계(screen coordinate system)
    • 이산적인(discrete) 정수로 평면을 채운다.
    • 스크린 좌표와 색상에 대응하는 화면의 구성 요소를 픽셀(pixel)이라고 한다.
    • 실수로 표현된 벡터 좌표를 정수로 변환한 후 색상을 부여하는 과정을 픽셀화(rasterization)라고 한다.
  데카르트 좌표계 스크린 좌표계
수 집합 실수 정수
수의 성질 연속적 이산적
단위 원소 벡터 픽셀
수의 범위 실수 범위 0부터 해상도 크기까지

 

 6.4.2 선 그리기 알고리즘

  • 브레젠험 알고리즘(bresenham's algorithm)은 화면을 8등분으로 구분한 후 각 영역별로 그려내는 중점 알고리즘(midpoint algorithm)이다.

그림 6-6 스크린 좌표계를 8등분한 화면

 

 6.4.3 라인 클리핑 알고리즘

  • 선분이 가진 성질은 유지하면서 지정된 영역에 맞는 데이터로 잘라주는 작업을 클리핑(clipping)이라고 한다.
  • 라인 클리핑 알고리즘(line clipping algorithm)
    • 두 점이 모두 0이면 두 점이 보라색(화면) 안에 위치해서 자를 필요가 없으므로 그대로 그린다.
    • 두 점을 &연산한 결과가 0보다 크면 두 점이 화면 밖에 위치해 있으므로 그릴 필요가 없다.
    • 두 점을 &연산한 결과가 0이면 두 점이 화면을 가로지르므로 유효한 영역만 남도록 클리핑한다.

그림 6-7 각 영역에 부여된 이진수 값

댓글