#include <windows.h>
#include <math.h>
#include "glut.h"
int x,y;//用这两个全局变量传递当前窗口的大小。
void init(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-150.0,150.0,-150.0,150.0);
}
int sign(int x)
{
if(x == 0)
{
return 0;
}
else
{
if(x>0)
return 1;
else
return -1;
}
}
void Doublestep(GLint x0,GLint y0,GLint x1,GLint y1)
{
x0*=y/300;y0*=y/300;x1*=y/300;y1*=y/300;//此行代码用于保持坐标与窗口相对位置不变
GLint d,dx,dy,current_x = x0,current_y = y0,cond;//声明有用的临时变量
dx = abs(x1-x0); dy = abs(y1-y0);
int s_x = sign(x1-x0); int s_y = sign(y1-y0);
cond = 2*dx;
d = 4*dy-dx;
bool is_changed;//标明,象限改变了,dx和dy互相颠倒过了。是改变了的。
if(dy>dx)
{//此时与标准情况正