직선그리기 - Bresenham algorithm for Python

def __drawLine(startX, startY, destX, destY) :
  # 변수 초기화
  path = []
  error = 0

  orginalX = startX
  originalY = startY
       
  # x2 >= x1, y2 > y1 이 되도록 한다.
  # 더 나은 python 적인 방법이 필요
  if startX > dx :
    temp = startX
    startX = dx
    dx = temp
         
  if startY > dy :
    temp = startY
    startY = dy
    dy = temp

  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식의 더 나은 방법이 필요한데 귀찮고 시간이 없어서 저런 식으로 구현을 ;

by 무혼인형 | 2009/04/07 14:31 | 트랙백 | 덧글(0)

트랙백 주소 : http://poorpuppet.egloos.com/tb/4109119
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶