[Graphics Study] 변환 - 2D

2022. 11. 9. 12:40·CS/Computer Graphics

1. 변환의 종류

- Scaling(축소, 확대)

2D에서는 축소확대인자(Sx,Sy)사용

예를들어 (x,y)를 축소/확대 할 때 x방향 인자, y방향 인자를 각각 곱해주면 됨. => (Sx*X, Sy*Y)

 

* 다만 그래픽스에서는 행렬의 곱셈으로 나타내므로

(Sx 0 ) (x) = (Sx X)

(0 Sy)  (y)     (Sy Y)

 

- Rotation(회전)

(x') =(cosθ - sinθ) (x)

(y')   (sinθ - cosθ) (y)

로 나타낼 수 있다. 여기서 θ: 회전하고 싶은 각도

 

*이건 반시계방향의 회전 기준이다. 시계방향으로 회전하려면 -θ를 대입한다.

 

- Translation(이동)

(x) + (dx) = (x + dx)

(y)     (dy)    (y+dy)

 

Translation의 경우 Scailing이나 Rotation과 달리 벡터 '덧셈'으로 이루어진다.

만약 Translation도 행렬곱으로 나타내고 싶다면, homogeneous coordinates(동차 좌표)를 사용하면 된다.

이를 사용하면 3*3행렬이 도출되므로 Scaling과 Rotation에도 1을 추가해서(Sx,Sy,1) 계산하여 3*3행렬을 만들면 된다.

그러면 회동과 이동을 둘 다 처리하는 등 일들이 가능해진다.

단 그 순서는 여전히 중요하다.

행렬곱에서 AB != BA이듯이 변환도 일종의 행렬곱으로서 교환법칙이 성립하지 않는다.

 

* 원점이 아닌 임의의 점을 변환하고 싶다면

그 점을 원점으로 Translate 한 후 변환, 원래위치로 Translate

안 그러면 다른 결과가 나옴

 

2. Affine transform

Affine transform은 아래와 같이 분류된다.

  • Linear transform

                - Scaling

                - Rotation

                - 그 외 여러가지

  • Translation

이처럼 Scaling, Rotation과 Translation은 다른 범주에 있다.

이들을 함께 적용(확대와 이동, 회전과 이동 등..)할 때 행렬곱 연산에도 영향을 준다.

-> 몇개의 Affine transform이 주어지더라도, [L|t] 결과가 도출된다.

[L|t]는 L(Linear transform combination)먼저 적용 후 t(combined translation)를 더하는 것. (Lp + t)

여기서 t(combined translation)은 x방향으로 얼마, y방향으로 얼마 이동하라는 translation들을 의미한다.

 

3. Rigid Motion

[L|t]에는 선형 변환들인 Scaling, Rotation이 포함되었으며 Translation도 포함되어 있다.

그러나 Scaling을 하지 않는 경우도 있다. 이 경우 물체의 모양은 변하지 않고, 오직 위치와 각도만 변한다.

이를 Rigid-body Motion 혹은 Rigid Motion이라고 한다.

다른 선형 변환 없이 Rotation만 포함하므로 [R|t]로 표현한다. 

역시나 Rotaion먼저 적용 후 translation을 더한다. (Rp + t)

 

'CS > Computer Graphics' 카테고리의 다른 글

그래픽스 구성요소, 그래픽 시스템  (0) 2023.04.23
[Graphics Study] 변환 - 3D  (0) 2022.11.09
[Graphics Study] 모델링  (0) 2022.10.17
[Graphics Study] 수학 기초  (0) 2022.10.17
[Graphics Study] 컴퓨터 그래픽스  (0) 2022.10.15
'CS/Computer Graphics' 카테고리의 다른 글
  • 그래픽스 구성요소, 그래픽 시스템
  • [Graphics Study] 변환 - 3D
  • [Graphics Study] 모델링
  • [Graphics Study] 수학 기초
LOGPOSE 로그포스
LOGPOSE 로그포스
다음 섬으로 향하고자 이번 섬을 기록하는 특수한 나침반
  • LOGPOSE 로그포스
    LOGPOSE
    LOGPOSE 로그포스
  • 전체
    오늘
    어제
    • 분류 전체보기 (135) N
      • [Unity] Projects & Study (27)
        • VR 멀티 항만 시뮬레이션 게임 (1)
        • HandiLab - AR 과학 실험 (10)
        • 우물 속에서 - VR 공포 게임 (2)
        • Loop - Interactive Movie (8)
        • Simple Platformer Game (4)
      • CS (67)
        • Algorithm & Data Structure (23)
        • Design Pattern (3)
        • Computer Graphics (23)
        • OS (16)
      • Java (9)
      • Cloud (3)
      • Docker (4)
      • Spring (2)
      • AWS (3)
      • LLM (3)
      • Kubernetes (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    2D
    Unity
    game
    Unity앱개발
    ovr
    프로그래밍 패러다임
    Photon
    개발
    함수형
    함수형 프로그래밍
    VR멀티게임
    선언형 프로그래밍
    함수형 패러다임
    VR게임
    AR
    Unity AR
    VR
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
LOGPOSE 로그포스
[Graphics Study] 변환 - 2D
상단으로

티스토리툴바