ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [그래픽스 이론] 아핀공간과 동차좌표계의 관계
    컴퓨터 공학과 수학 2021. 4. 6. 17:21

    openGL에 대하여 공부하다보면, Projection matrix가 전이(translation) 을 행렬의 곱으로 표현하기 위해서 4 by 4 행렬을 사용한다고 하고 있다. 그리고 이 때 3차원 벡터와 점을 구분하는 용도로 끝에 1을 붙이는 동차좌표계(homogeneous coordinate)를 사용한다고 배운다.

     

    이에 관련하여 많은 분들이 정리를 잘 해주셨다. 그중 몇개 링크를 공유하도록 한다.

    darkpgmr.tistory.com/78

    blog.daum.net/shksjy/229

     

    하지만 나는 공부를 하면서 한 가지 의문이 생겼다. 동차좌표계가 사영기하학의 분야면, 왜 선형대수처럼 행렬의 개념으로 쓰이는가? 전통 사영기하학은 벡터가 없는데 왜 여기선 벡터가 있는가? 또한 선형대수는 벡터와 스칼라만 있지, 점이란 개념이 없다. 혹시 선형대수도, 사영기하학도 아닌 다른 분야에서 파생된건 아닐까? 

    이부분에 대하여 조사를 좀 깊게 하면서 나름의 고찰을 해보았고, 내가 내린 결론을 여기 올려보도록 한다. 이건 개인적 견해일 뿐이지, 정설은 아님을 밝힌다.

     

    그 기원에 대한 조사를 해 본 결과, 이는 사영기하학에서 나온 개념과 정의만 같고, 실질적 활용 방식은 그래픽스의 특성에 맞게 변형을 한것이다. 그럼 그래픽스에서 쓰는 동차좌표는 무엇을 위해 존재하는가? 그것은 바로 아핀공간을 위해 존재한다는 결론을 내렸다. 

     

    아핀공간(affine space)은 선형대수에서 쓰는 벡터공간(vector space)에서 파생된 새로운 개념으로, 벡터공간의 벡터와 독립적인 점(point) 라는 새로운 개념을 추가한 공간이다. 선형대수에서 벡터공간이 가지는 추상적 의미에 대한 이야기는 부록으로 남겨두고, 본문에선 벡터공간과 아핀공간의 차이만 이야기 하도록 하겠다.

     

    아핀공간을 조금 더 직관적으로 해석하면, 위치 개념이 없는 벡터공간에서 점이란 개념을 도입해 벡터의 위치를 다르게 표현한 공간이다. 선형대수의 벡터공간에는 위치가 없다. 이로 인해 선형대수의 벡터는 방향과 크기(norm이 있단 가정하에..) 만 같으면 위치와 상관없이 같아진다. 하지만 현실의 3D 공간을 다루는학문(기계공학이나 그래픽스등) 에서는 벡터의 위치에 따라 다른 벡터로 구분할 필요가 있고, 이 때 위치라는 새로운 존재를 벡터공간에 추가하여 확장한 개념이 바로 아핀 공간이다.

     

    아핀공간에 대한 좀 더 자세한 설명은 다음 블로그 글들을 참조하는게 좋겠다.

    m.blog.naver.com/PostView.nhn?blogId=herodk&logNo=110136893847&proxyReferer=http:%2F%2F203.233.19.219%2Ftm%2F%3Fa%3DWH%26b%3DWIN%26c%3D799007237467%26d%3D10003%26e%3D1031%26f%3DbS5ibG9nLm5hdmVyLmNvbS9oZXJvZGsvMTEwMTM2ODkzODQ3%26g%3D1617693046789%26h%3D1617693046708%26y%3D0%26z%3D0%26x%3D1%26w%3D2021-01-21%26in%3D1031_1610_00008207%26id%3D20210406

    m.blog.naver.com/destiny9720/221409774016

     

    결국 그래픽스의 본질은, 도형을 3차원 공간에서 그리는 행위이다. 도형은 점, 선, 면으로 이루어져 있고(볼륨 렌더링은 아직 잘 몰라서 모른다..만 추측상 MRI 같이 tomography 기반이면 이도 결국 면의 집적체에 불과하다 볼 수 있다.), 이들의 회전과 이동, 크기 변환 등을 표현해야 한다. 이 때 카메라에 보이는지 여부도 판단하기 위해선 3차원 공간상의 위치와 길이가 모두 필요하고, 따라서 벡터공간으로는 이 모든걸 표현할 수 없어서 아핀공간을 도입한 것이다.

     

    그럼 동차좌표계와 아핀공간은 어떤 관계인가? 사실 동차좌표의 본질과는 그리 관계가 없다. 왜냐면 사영기하학의 동차좌표계에서는 원래 끝이 0인건 무한대에 있는 점(벡터가 아니다.) 을 상징하는데, 그래픽스는 이를 그냥 벡터를  상징하는거로 변환했기 때문이다. 이미 정의부터가 바뀌었기 때문에 근원이 어쩌고 사영기하학이 어쩌고 하는건 사실 크게 의미없다고 본다. 그냥 그래픽스는 동차좌표계의 표현만 빌리고, 끝이 0과 0이 아닌 경우를 점과 선에 대한 좌표로 구분하고 싶었을 뿐이다. 즉, 근간의 수학적 의미를 깊이 이해하려고 해도 존재하지 않기때문에 할 필요가 없는 것이다.

     

    그렇다고 그래픽스의 정의법이 틀렸다는건 아니다. 그렇게 따지면 신호처리에서 푸리에변환을 주파수영역에 대응시켜 필터를 정의하는 방식도 순수 수학(푸리에 해석학)적 관점에선 틀린 용도로 사용하는거다. 틀린게 아니고 그냥 공학적 응용으로 보는게 맞고, 그게 그 학문에서 의미하는 바를 잘 표현해준다면 그걸로 된거라 생각한다.

     

     

    부록

    선형대수에서 벡터가 지니는 추상화 수준에 대하여 잠시 설명을 하겠다. 선형대수에서는 벡터가 무엇인지 정하고 벡터공간을 정하는게 아니고, 벡터공간을 정의한 뒤 그 원소가 벡터라 정의한다. 구체적으로, 어떤 원소들의 집합이 벡터공간인지 여부를 10개의 공리로 판별하고, 그 집합이 해당 공리를 전부 만족하면 벡터공간이라 정의한다. 그리고 그 벡터공간의 원소를 벡터라고 정의한다. 이 방식 덕에 벡터는 특정 성질을 만족하는 집합체의 원소라는 폭넓은 주형(template) 적인 형태가 된 셈이다. 이 주형에 맞는 집합의 원소면 그 무엇이든 벡터가 될 수 있다. 예를 들어, 복소체 또는 실수체 다항식의 집합은 벡터공간의 모든 공리를 만족하기 때문에 이 집합을 벡터공간으로 볼 수 있고, 따라서 다항식은 벡터로 볼 수 있다.

    이렇게 정의된 벡터들은 방향과 크기만 주고(크기는 심지어 norm이 정의되지 않으면 존재하지 않아도 된다. 스칼라 곱은 크기를 변형하는 의미보단 서로 다른 벡터를 생성하는 도구의 의미가 더 맞다고 본다.) 그들의 공간상 위치에 대한 의미는 완전히 버려버린 추상화된 개념이다. 다만 원점이란 개념이 존재하는데, 이 원점은 바로 10개 공리중 벡터의 덧셈에 대한 항등원에 대응한다. 그리고 벡터공간은 이 원점을 기준으로 더하기도 하고, 역원을 통해 빼기도 하면서 서로 다른 벡터들간의 관계를 표현 가능하다는 특징이 있다. 아핀공간은 위치의 개념이 추가되어 항등원이 존재할 수 없고, 따라서 원점도 존재하지 않는다.

Designed by Tistory.