function DrawLine(x1,y1,x2,y2,r,g,b)
if math.abs(x2-x1)>math.abs(y2-y1) then
steps=math.abs(x2-x1);
else
steps=math.abs(y2-y1);
end
increx=(x2-x1)/steps;
increy=(y2-y1)/steps;
x=x1;
y=y1;
for i=1,steps do
DrawPixel(x,y,r,g,b);
x=x+increx;
y=y+increy;
end
end
function DrawRectFull(x,y,w,h,r,g,b)
for i=0,w do
for o=0,h do
DrawPixel(x+i,y+o,r,g,b)
end
end
end
function DrawRect(x,y,w,h,r,g,b)
DrawLine(x,y,x+w,y,r,g,b)
DrawLine(x,y,x,y+h,r,g,b)
DrawLine(x+w,y,x+w,y+h,r,g,b)
DrawLine(x,y+h,x+w,y+h,r,g,b)
end
function DrawPutdot(x0,y0,x,y,r,g,b)
DrawPixel(x0+x,y0+y,r,g,b)
DrawPixel(x0+x,y0-y,r,g,b)
DrawPixel(x0-x,y0+y,r,g,b)
DrawPixel(x0-x,y0-y,r,g,b)
DrawPixel(x0+y,y0+x,r,g,b)
DrawPixel(x0+y,y0-x,r,g,b)
DrawPixel(x0-y,y0+x,r,g,b)
DrawPixel(x0-y,y0-x,r,g,b)
end
--[[
function DrawCircle(x0,y0,l,r,g,b)
x=0
y=l
f=0
while x<=y do
DrawPutdot(x0,y0,x,y,r,g,b)
if f<=0 then
f=f+2*x+1
x=x+1
else
f=f-2*y+1
y=y-1
end
end
end
--]]
function DrawCircle(x0,y0,l,r,g,b)
x=0;y=l;f=5/4-y
while x<=y do
DrawPutdot(x0,y0,x,y,r,g,b)
if f<0 then
f=f+2*x+3
else
f=f+2*(x-y)+5
y=y-1
end
x=x+1
end
end
想用C实现的话照着思路改改就行。
找了些关于计算机图形学的资料。