53 lines
961 B
Plaintext
53 lines
961 B
Plaintext
fn plot img coord steep col =
|
|
(
|
|
if steep then
|
|
(
|
|
swap coord[1] coord[2]
|
|
)
|
|
setPixels img coord col
|
|
)
|
|
|
|
fn drawLine img start end col =
|
|
(
|
|
local steep = (abs (end.y - start.y)) > (abs (end.x - start.x))
|
|
|
|
if steep then
|
|
(
|
|
swap start.x start.y
|
|
swap end.x end.y
|
|
)
|
|
|
|
if start.x > end.x then
|
|
(
|
|
swap start.x end.x
|
|
swap start.y end.y
|
|
)
|
|
|
|
local deltaX = end.x - start.x
|
|
local deltaY = abs (end.y - start.y)
|
|
local error = deltaX / 2.0
|
|
local yStep = -1
|
|
local y = start.y
|
|
|
|
if start.y < end.y then
|
|
(
|
|
yStep = 1
|
|
)
|
|
|
|
for x in start.x to end.x do
|
|
(
|
|
plot img [x, y] steep col
|
|
error -= deltaY
|
|
if error < 0 then
|
|
(
|
|
y += yStep
|
|
error += deltaX
|
|
)
|
|
)
|
|
img
|
|
)
|
|
|
|
myBitmap = bitmap 512 512 color:(color 0 0 0)
|
|
myBitmap = drawLine myBitmap [0, 511] [511, 0] #((color 255 255 255))
|
|
display myBitmap
|