직선그리기 - Bresenham algorithm for Python
에서 이동
def __drawLine(startX, startY, destX, destY) :
# 변수 초기화
path = []
error = 0
orginalX = startX
originalY = startY
# x2 >= x1, y2 > y1 이 되도록 한다.
if startX > dx :
(startX, dx) = (dx, startX)
if startY > dy :
(startY, dy) = (dy, startY)
delta_x = dx - startX
delta_y = dy - startY
path.append( [startX, startY] )
if delta_x > delta_y :
y = startY
half = int( delta_x / 2 )
for x in range((startX+1), dx) :
error += delta_y
if error > half :
y += 1
error -= delta_x
path.append([x, y])
else :
x = startX
half = int( delta_y / 2 )
for y in range((startY+1), dy) :
error += delta_x
if error > half :
x += 1
error -= delta_y
path.append([x, y])
return path
변수값 swap 할때 python식의 더 나은 방법이 필요한데 귀찮고 시간이 없어서 저런 식으로 구현을 ;
2011-01-07 수정