ABOUT ME

다음 섬으로 향하고자, 이번 섬을 기록하는 어느 개발자의 나침반

Today
Yesterday
Total
  • [Graphics Study] 변환 - 2D
    CS/Computer Graphics 2022. 11. 9. 12:40

    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
Designed by Tistory.