天天看点

用LUA写的绘图函数

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实现的话照着思路改改就行。

找了些关于计算机图形学的资料。