게임을 만들다보면 두점 사이의 방향이나 거리를 구해야 하는 일이 많습니다.
이거 하나 하자고 벡터 클래스 만들기도 귀찮아서 아래와 같은 코드를 작성하곤 했는데...

import math

src = (sx, sy)
dst = (dx, dy)
scale = 2.0

delta = dst[0] - src[0], dst[1] - src[0]
deltaLen = math.sqrt(delta[0] * delta[0], delta[1] * delta[1])
deltaDir = (delta[0] / deltaLen, delta[1] / deltaLen)
newPos = deltaDir[0] * scale, deltaDir[1] * scale

속도는 둘째치고, 코드량의 압박이 장난이 아닙니다.

오늘 몬스터 날리기를 구현하던 도중 불현듯 재밌는 아이디어가 떠오르더군요

바로 복소수!! 입니다.

(x, y) 좌표 연산이나 복소수 연산이나 2차원 연산이라는 점에서 동일하거든요


src = (sx, sy)
dst = (dx, dy)
scale = 2.0

delta = complex(*dst) - complex(*src)
deltaLen = abs(delta)
deltaDir = delta / abs(delta)
newPos =
delta / abs(delta) * scale
짠 ~

와하하 너무 좋아요

이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/08/14 17:04 2008/08/14 17:04