/* Example 1.4.line.c: scan-convert randomly generated lines with antialiasing */ // by Jim X. Chen; September, 2000 #include #include #include #define ESC 27 #define SPACE 32 int Height=400, Width=400; float r, g, b; void swapd(int *a, int *b) { int tmp; tmp=*a;*a=*b;*b=tmp; } void writepixel(int x, int y, int flag) { glBegin(GL_POINTS); if (flag==0) glVertex2i (x,y); else if (flag==1) glVertex2i (y,x); else if (flag==10) glVertex2i (x,-y); else if (flag==11) glVertex2i (y,-x); glEnd(); } void IntensifyPixel(int x,int y, double D, int flag) { float d, r1, g1, b1; if (D<0) d = -D; else d = D; r1=r*(1-d/2.5); g1=g*(1-d/2.5); b1=b*(1-d/2.5); glColor3f(r1, g1, b1); writepixel(x,y,flag); } void antialiasedLine(int x0,int y0,int xn,int yn) { /* scan-convert a 3 pixel wide antialiased line */ int dx, dy, incrE, incrNE, d, x, y, flag = 0; double D=0, sin_a, cos_a, sin_cos_a, Denom; if (xn