AntiAliased line algorithm (uses floating point)
    public void lineAA(int x0, int y0, int x1, int y1) {
	int pix = color.getRGB();
	int dy = y1 - y0;
	int dx = x1 - x0;
	int stepx, stepy;
	double invD = ((dx==0)&&(dy==0)) ? 0.0 : 1.0/(2.0*Math.sqrt(dx*dx+dy*dy));
	if (dy < 0) { dy = -dy;  stepy = -1; } else { stepy = 1; }
	if (dx < 0) { dx = -dx;  stepx = -1; } else { stepx = 1; }
	dy <<= 1;                                                  // dy is now 2*dy
	dx <<= 1;                                                  // dx is now 2*dx
	if (dx > dy) {
	  int fraction = dy - (dx >> 1);
	  int v2dx = 0;
	  double dd, invD2dx = dx * invD;
	  setPixelAA(x0, y0, 0);
	  setPixelAA(x0, y0 + stepy, invD2dx);
	  setPixelAA(x0, y0 - stepy, invD2dx);
	  while (x0 != x1) {
	    v2dx = fraction;
		if (fraction >= 0) {
		  y0 += stepy;
		  v2dx -= dx;
		  fraction -= dx;
		  }
		x0 += stepx;
		v2dx += (dx >> 1);
		fraction += dy;
		dd = v2dx * invD;
		setPixelAA(x0, y0, dd);
		setPixelAA(x0, y0 + stepy, invD2dx - dd);
		setPixelAA(x0, y0 - stepy, invD2dx + dd);
		}
		else {
		  ...}
    }
Lecture 5   Slide 12h   6.837 Fall '01