www.pudn.com > CG2Programs.rar > lineDDA.c


/* lineDDA, Chapter 3, p. 88 */

/* EXAMPLE STARTS HERE */
#include "device.h"

#define ROUND(a) ((int)(a+0.5))

void lineDDA (int xa, int ya, int xb, int yb)
{
  int dx = xb - xa, dy = yb - ya, steps, k;
  float xIncrement, yIncrement, x = xa, y = ya;

  if (abs (dx) > abs (dy)) steps = abs (dx);
  else steps = abs (dy);
  xIncrement = dx / (float) steps;
  yIncrement = dy / (float) steps;
    
  setPixel (ROUND(x), ROUND(y));
  for (k=0; k