哪位大侠有四个象限皆可用的画线算法。。。(100分)

  • 主题发起人 主题发起人 gxlnew
  • 开始时间 开始时间
G

gxlnew

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位大侠有四个象限皆可用的画线算法,谢谢!谢谢!!
 
计算机上课没有四个象限,只有第一象限而已(还是左上角为原点)。
所以啊,你还是自己控制画线算了,不就是一个坐标换算嘛。
 
同意 wjiachun
 
听听你要怎么画?
 
各位误会了,我的意思是请大侠告知我画线算法--许多书上写的算法的只能画
0<|k|<1的情形(k为斜率),谢谢!谢谢!!
 
把坐标系变换到数学坐标系就可以搞定了。

SetMapMode(MM_ANISOTROPIC);
SetWindowOrg(0, 0); // 或者是屏幕的中心
SetWindowExt(100, -100);
SetViewPortExt(100, 100);

上面的函数只写了关键的参数,用的时候自己补充。
 
各位又误会了,我的意思是请大侠告知我画线算法的代码。。。C的也行。。。
 
void line(int left,int top,int right,int bottom,unsigned char color)
{
register t;
int distance;
int x=0,y=0,delta_x,delta_y,incx,incy;
delta_x=right-left;
delta_y=bottom-top;
if(delta_x>0)incx=1;
else
if(delta_x==0)incx=0;
else
{
delta_x=-delta_x;
incx=-1;
}
if(delta_y>0)incy=1;
else
if(delta_y==0)incy=0;
else
{
delta_y=-delta_y;
incy=-1;
}
if(delta_x>delta_y)
distance=delta_x;
else
distance=delta_y;
for(t=0;t<distance+2;t++)
{
putpixel(left,top,color);/* TURBO C 2.0的图形函数,请换成你的画点函数*/
x+=delta_x;
y+=delta_y;
if(x>distance)
{
x-=distance;
left+=incx;
}
if(y>distance)
{
y-=distance;
top+=incy;
}
}
}
 
To CurveSoft:
谢谢!谢谢!!
 

Similar threads

后退
顶部