Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,40 @@
|
|||
-- demo\rosetta\Bitmap_Circle.exw (runnable version)
|
||||
include ppm.e -- red, yellow, new_image(), write_ppm() -- (covers above requirements)
|
||||
|
||||
function SetPx(sequence img, atom x, y, integer colour)
|
||||
if x>=1 and x<=length(img)
|
||||
and y>=1 and y<=length(img[x]) then
|
||||
img[x][y] = colour
|
||||
end if
|
||||
return img
|
||||
end function
|
||||
|
||||
function Circle(sequence img, atom x, y, r, integer colour)
|
||||
atom x1 = -r,
|
||||
y1 = 0,
|
||||
err = 2-2*r
|
||||
if r>=0 then
|
||||
-- Bresenham algorithm
|
||||
while 1 do
|
||||
img = SetPx(img, x-x1, y+y1, colour)
|
||||
img = SetPx(img, x-y1, y-x1, colour)
|
||||
img = SetPx(img, x+x1, y-y1, colour)
|
||||
img = SetPx(img, x+y1, y+x1, colour)
|
||||
r = err
|
||||
if r>x1 then
|
||||
x1 += 1
|
||||
err += x1*2 + 1
|
||||
end if
|
||||
if r<=y1 then
|
||||
y1 += 1
|
||||
err += y1*2 + 1
|
||||
end if
|
||||
if x1>=0 then exit end if
|
||||
end while
|
||||
end if
|
||||
return img
|
||||
end function
|
||||
|
||||
sequence img = new_image(400,300,yellow)
|
||||
img = Circle(img, 200, 150, 100, red)
|
||||
write_ppm("Circle.ppm",img)
|
||||
Loading…
Add table
Add a link
Reference in a new issue