Bitmap/Bresenham's line algorithm: Difference between revisions

Corrected Julia code
(→‎{{header|Kotlin}}: Updated example see https://github.com/dkandalov/rosettacode-kotlin for details)
(Corrected Julia code)
Line 1,911:
 
=={{header|Julia}}==
{{works with|Julia|0.6}}
<lang Julia>function linedrawline!(img::Matrix{T}, x0::Int, y0::Int, x1::Int, y1::Int, col::T) where T
dx δx = int(abs(x1 - x0))
dy δy = int(abs(y1 - y0))
δe = abs(δy / δx)
er = 0.0
 
y = y0
<lang Julia>function line(img, x0::Int, y0::Int, x1::Int, y1::Int, col)
for x in x0:x1
dx = int(abs(x1-x0))
img[x, y] = col
dy = int(abs(y1-y0))
er += δe
if er > 0.5
y += 1
er -= 1.0
end
end
 
return img
sx = x0<x1 ? 1 : -1
end
sy = y0<y1 ? 1 : -1;
 
using Images
err = (dx>dy ? dx : -dy)/2
 
img = fill(Gray(255.0), 5, 5);
while true
println("\nImage:")
@inbounds img[x0,y0]=col
display(img); println()
if (x0==x1 && y0==y1); break; end
drawline!(img, 1, 1, 5, 5, Gray(0.0));
e2 = err;
println("\nModified image:")
if e2 > -dx
display(img); println()</lang>
err -= dy
 
x0 += sx
{{out}}
end
<pre>
if e2 < dy
Image:
err += dx
5×5 Array{Gray{Float64},2}:
y0 += sy
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
end
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
end
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
end
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
</lang>
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
 
Modified image:
5×5 Array{Gray{Float64},2}:
Gray{Float64}(0.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
Gray{Float64}(255.0) Gray{Float64}(0.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(0.0) Gray{Float64}(255.0) Gray{Float64}(255.0)
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(0.0) Gray{Float64}(255.0)
Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(255.0) Gray{Float64}(0.0) </pre>
 
=={{header|Korn Shell}}==
Anonymous user