Guest User

Untitled

a guest
Sep 10th, 2018
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Function BresenhamLine:Vector2D[](startPos:Vector2D, endPos:Vector2D)
  2.     Local steep:Bool = Abs(endPos.y - startPos.y) > Abs(endPos.x - startPos.x)
  3.     Local swapped:Bool = false
  4.    
  5.     if steep
  6.         startPos.Swap(startPos.x, startPos.y)
  7.         endPos.Swap(endPos.x, endPos.y)
  8.     End
  9.    
  10.     if startPos.x > endPos.x
  11.         Local t:Float = startPos.x
  12.         startPos.x = endPos.x
  13.         endPos.x = t
  14.         t = startPos.y
  15.         startPos.y = endPos.y
  16.         endPos.y = t
  17.         swapped = True
  18.     End
  19.    
  20.     Local deltax:Float = endPos.x - startPos.x
  21.     Local deltay:Float = Abs(endPos.y - startPos.y)
  22.     Local error:Float = deltax / 2
  23.     Local ystep:Float
  24.     Local y:Float = startPos.y
  25.    
  26.     if startPos.y < endPos.y Then
  27.         ystep = 1
  28.     Else
  29.         ystep = -1
  30.     End
  31.    
  32.     Local pointsX:Float[] = New Float[*size here*]
  33.     Local pointsY:Float[] = New Float[*size here*]
  34.     Local i:Int = 0
  35.     For Local x:Int = startPos.x until endPos.x
  36.         if steep
  37.             pointsX[i] = y
  38.             pointsY[i] = x
  39.         Else
  40.             pointsX[i] = x
  41.             pointsY[i] = y
  42.         End
  43.         i += 1
  44.    
  45.         error -= deltay
  46.         if error < 0
  47.             y += ystep
  48.             error += deltax
  49.         End
  50.     Next
  51.     If swapped
  52.         Arrays<Float>.Reverse(pointsX)
  53.         Arrays<Float>.Reverse(pointsY)
  54.     End
  55.     ' TODO: return two arrays???
  56. End
Add Comment
Please, Sign In to add comment