한국물리학회에서 나오는 <물리학과 첨단기술> 9월호가 이메일로 왔다. 그중 '게임물리학'을 소개하는 글이 있었는데 게임물리학이란 컴퓨터 게임을 만드는데 이용되는 물리학을 뜻한다고 한다. 주로 3차원 가상공간에서의 물체의 움직임 등을 구현하는데 필요하단다.

그런데 물리학과 학생들이 3차원 가상공간을 구현하는 프로그래밍을 하기 어려워 걸림돌이 된다고 한다. 우연히 쉽고 간단한 방법을 알게 되었는데 비주얼 모듈을 이용한 파이썬 즉 VPython이 그 답이었다. 파이썬은 종종 프로그래밍할 때 이용해봐서 알고 있었는데 비주얼은 처음 들어봤다. 사실 내가 연구하는 모형이 어떻게 돌아가는지 사람들에게 시뮬레이션을 보여주고 싶어서 파이썬의 Tkinter를 이용하여 만들어본 적도 있기는 한데 비주얼 베이직 같은 것보다도 훨씬 느려서 개선해보고 싶었으나 아는 게 없어서 내버려둔 적이 있다.

그런데 무려 3차원 공간과 그 안에서의 운동을 간단한 12줄 짜리 코드로 구현해주는 모듈이라니. 위의 글에 있는대로 똑같이 짰더니 정말 쉽게 된다. 원래 파이썬이 직관적으로 이해하기 쉬운 프로그래밍 언어라서 어려울 것도 없다. 아래가 코드의 전부다.

--->
from visual import *
floor=box(pos=(0,0,0),size=(4,.5,4),color=color.blue)
ball=sphere(pos=(0,4,0),radius=1,color=color.red)
ball.velocity=vector(0,-1,0)
dt=.01
while 1:
    rate(100)
    ball.pos=ball.pos+ball.velocity*dt
    if ball.y<ball.radius:
        ball.velocity.y=-ball.velocity.y
    else:
        ball.velocity.y=ball.velocity.y-9.8*dt
<---

사용자 삽입 이미지

y축과 z축이 헷갈렸는데, 설명서를 보니 화면의 위쪽이 y축이고 앞쪽(내쪽)이 z축이다. 저 코드를 써넣고 실행시키면 위처럼 빨간 공이 파란 바닥에 튕겨 올라갔다 다시 떨어지기를 무한히 반복한다. 위 그림은 내 컴에서 실행시킨 후 캡쳐한 그림이다.

하루종일 이래저래 좀 우울했는데 재미있는 장난감을 주운 것 같아서 기분이 조금 나아졌다. 냐옹.