怎样用c++编计算机图形学中画任意斜率直线的函数

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:36:01

line(x,y)x和y是屏幕里的坐标.
自己翻翻图形学书就可以找到这些知识的

给你一个函数 你应该看的懂要是你学了图形学的话(其实懂C++的都看的懂)

//起点:x0,y0
//终点:x1,y1
void Bresenham_Line(HDC hdc,int x0,int y0,int x1,int y1,long color)
{
int x,y,dx,dy,e;
int i,temp;
int change=0;
int Step_X=1,Step_Y=1;
dx=x1-x0, dy=y1-y0;

if(dx<0) {
dx=-dx;
Step_X=-1;
}
if(dy<0) {
dy=-dy;
Step_Y=-1;
}
if(dy>dx){
temp=dx;
dx=dy;
dy=temp;
change=1;
}
e=-dx, x=x0,y=y0;
for(i=0;i<=dx;i++)
{

SetPixel(hdc,x,y,color);
if(change) y=y+Step_Y;
else x=x+Step_X;
e=e+2*dy;
if(e>=0)
{
if(change) x=x+Step_X;
else y=y+Step_Y;
e=e-2*dx;
}
}
}