Skip to Content

직선그리기 - Bresenham algorithm for Python

Posted on

에서 이동

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 수정