Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function BresenhamLine:Vector2D[](startPos:Vector2D, endPos:Vector2D)
- Local steep:Bool = Abs(endPos.y - startPos.y) > Abs(endPos.x - startPos.x)
- Local swapped:Bool = false
- if steep
- startPos.Swap(startPos.x, startPos.y)
- endPos.Swap(endPos.x, endPos.y)
- End
- if startPos.x > endPos.x
- Local t:Float = startPos.x
- startPos.x = endPos.x
- endPos.x = t
- t = startPos.y
- startPos.y = endPos.y
- endPos.y = t
- swapped = True
- End
- Local deltax:Float = endPos.x - startPos.x
- Local deltay:Float = Abs(endPos.y - startPos.y)
- Local error:Float = deltax / 2
- Local ystep:Float
- Local y:Float = startPos.y
- if startPos.y < endPos.y Then
- ystep = 1
- Else
- ystep = -1
- End
- Local pointsX:Float[] = New Float[*size here*]
- Local pointsY:Float[] = New Float[*size here*]
- Local i:Int = 0
- For Local x:Int = startPos.x until endPos.x
- if steep
- pointsX[i] = y
- pointsY[i] = x
- Else
- pointsX[i] = x
- pointsY[i] = y
- End
- i += 1
- error -= deltay
- if error < 0
- y += ystep
- error += deltax
- End
- Next
- If swapped
- Arrays<Float>.Reverse(pointsX)
- Arrays<Float>.Reverse(pointsY)
- End
- ' TODO: return two arrays???
- End
Add Comment
Please, Sign In to add comment