개발자 인생의 태클 – 수학, 물리

공업수학을 배우셨던 고등학교과정의 수학마저도 잊었든 개발자에게 수학은 영어와 같은 장벽입니다.

소프트웨어 공학상 개발자는 여러 가지 능력을 요구 받는데 일반적으로 핵심 알고리즘에 구현에는 모두 수학이 관여하게 됩니다.

특히 플래시 분야는 시각적인 알고리즘을 많이 구현하는데 이 때는 더욱 더 수학에 의존하게 됩니다. 그래픽스 분야에서 개발자에게 요구하는 수학은 어찌 보면 제한적입니다.

  1. 수열을 기본으로 미적분을 귀납적 수열식으로 바꾸는 능력이 일단 요구됩니다. 컴터는 짜피 미적분이 불가능하기 때문에 이 부분의 능력은 기본이죠.
  2. 삼각함수는 당연히 요구됩니다(사실 삼각함수는 별거 없잖아요 ^^) 사인코사인탄젠트와 아크계열이 어떤 의미인지만 정확하게 이해하고 도해할 수 있으면 충분합니다.
  3. 벡터는 벡터의 내적이 어떤 의미인지 외적이 어떤 의미인지를 정확히 이해하고 이를 기하적으로 사용할 수 있는 능력이 1차적으로 요구됩니다.
  4. 일단 3번의 능력을 갖추면 동차식이라는 개념을 잡아야합니다. 점과 벡터는 다른 차원인데 이를 w를 통해 4차식(2D에서는 3차식)으로 변환하여 같은 차원에서 연산이 가능하도록 하는 개념입니다.
  5. 행렬은 기본적으로 벡터의 연속이므로 3,4번이 확고하면 배우기가 용이합니다. 궁극적으로 행렬, 행렬식, 역행렬 등과 그에 수반되는 여인자 등의 부가개념을 익힌 후 최종목표는 행렬식이 어떻게 벡터와 관계가 되는지를 이해하는 것입니다.
  6. 기본이 완전히 갖춰지면 그 이후엔 개별 공식을 익혀갑니다. 조명과 관련된 공식이나, 수치적 해법이라 알려져있는 가우스, LU, 상미분시리즈(오일러, 테일러, 쿠다..) 또한 곡선의 방정식들(스플라인, 베지에, 에르미트, 넙스)
  7. 3D로 확장하고 싶다면 옥진트리, 절두체판정, 가시성판정 등을 더 추가적으로 익혀가면 됩니다.

위의 과정은 글쎄요, 사람마다 다르겠지만 나름 자유롭게 사용할 수 있는 수준으로 도달하는데 얼마 안 걸립니다. 그리고 내용이 기본적으로 쉽기 때문에 누구라도 할 수 있습니다. 단지 의지와 실행력의 문제랄까요. 제가 추천하는 입문서는 정말 저로서는 엄청나게 보기 드물게 국내서로 추천 드리는 “좋은 게임을 만드는 핵심 원리 : 게임 수학과 물리(한빛미디어)” 입니다. 입문자에게 이 이상 좋은 책을 찾지 못했습니다.

물리는 그것이 그것답게 해주는 역활을 합니다. 즉 우리의 실생활에서 느끼고 본 것처럼 컴터가 시뮬레이팅 해주길 바란다면 물리를 공부해야 합니다.

물리는 제가 간신히 공부해서 그럭저럭 쓰는 수준이라 위의 수학처럼 제 나름대로 정리된 맵을 제시해드릴 능력이 안됩니다. 부족함을 이해해주시길..^^; 마지막으로 제가 가진 책들이나 리뷰 해드리면서 마감하겠습니다.

image일단 업계 고전으로 인정받는 저서는 리얼타임 렌더링과 게임물리 바이블입니다. 이 책 2권을 마스터했다면 gems시리즈나 가끔 보면서 동향만 익히면 언제나 최신 쟁이 상태를 유지할 수 있습니다.

좋은 게임을 만드는 핵심원리 라는 책은 위에서 말씀 드린대로 저는 최고의 입문서라 생각합니다.

3D게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학 은 유명한 책이긴 한데 난해하고 수치적인 해법으로부터 실무에 연결하기 위해 본인의 기본적인 수학 이해가 많이 요구되는 어찌보면 어렵게 쓰려고 어렵게 쓴 느낌이 많은 책입니다. 같은 산을 등산로로 올라갈 수 있는데 암벽등반을 시키는 느낌이랄까요. 여러 가지 수치적 해법제시는 훌륭하지만, 그건 이미 수학이 익숙한 사람에게 도움이 되고 발전을 할 수 있는 부분이고 보통에겐 힘듭니다. 결론적으로 제가 좋아하는 책이죠 ㅎㅎ

게임프로그래밍의 핵심 테크닉과 알고리즘 이란 책은 정말 좋습니다. 사실 수학책은 아니고 오만 게임관련 알고리즘이 등장하는 책인데 이 책의 수학, 물리 부분이 다 훌륭합니다.

제가 처음 게임관련 물리를 배운 오라엘리의 생생한 게임 개발에 꼭 필요한 기본 물리…이 책도 암벽등반용 책입니다. 훨씬 더 고급 주제를 다루는 게임 물리 바이블이 오히려 더 쉽게 느껴질 정도로 난해하고 어려운 문체로 되어있습니다(원서도 들고 있지만 원서도 그런 풍입니다)

그래픽스 프로그래밍 방법론 은 gems시리즈에서 미처 다루지 못했던 더 깊은 부분의 테크닉을 다룹니다. ㅎㅎ 이게 여러분에게 도움이 되신다면 여러분은 할 만큼 하신 거라 할 수 있습니다.



관련된 글:

  1. Developer Book review 10.08.30
  2. Developer Book review 10.08.17
  3. Developer Book review 10.06.30
  4. 키코드값표
  5. Developer Book review 10.05.10

6 Comments

  1. 야매코더 says:

    음.. 저또한 수학이 비주얼한 프로그래밍에 있어 단연 필요 하다고 봅니다. 저 같은경우는 워낙 기초가 없어서^6;

    삼각함수는 ” 이야기로 아주 쉽게 배우는 삼각함수 _더글라스 다우닝 지음” 를 보고 많이 배웠습니다. ~ 정말.. 쉽게

    했더라고요 만약, 이것을 고등학교때 알았더라면 합니다~

  2. 윤연식 says:

    사실 처음에 대학 입학했을때 아무생각없이 수학과목이 없어서 좋다고 들어온 후에

    여기까지 왔는데… 결국 수학과 물리를 만나게 되네요..

    수학 지식은 0에 가까워서 걱정은되지만 일단 좋은 게임을 만드는 핵심원리와 게임프로그래밍의 핵심 테크닉과 알고리즘

    를 구입했습니다…

    요즘 의욕이 좀 떨어져 있었는데 덕분에 다시 공부할 열의가 생기게 되네요 감사합니다…

    • admin says:

      수학이 수에 대한 학문이라고 풀이하는건 직관적으로 알 수 있지만 수가 무엇인지 설명하기란 쉽지 않습니다.
      만약 수학이 처음이시라면 수가 무엇인지 한참 고민하시는게 수학을 익혀가는 과정에서 많은걸 쉽게 해준다는 힌트를 드립니다 ^^

      딱히 제가 수학자는 아니지만서도 ㅎㅎ

  3. 웹눈 says:

    3D게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학이라는 책 한번 봐야겠습니다..

    좋은책 소개 해주셔서 감사드려요 ㅎ

Leave a Reply