More Clipping
    if (flag == 0) {          // entirely inside clipping volume
        ScanConvert(raster);
      } else
      if (flag == 7) {          // entirely outside clipping volume
        return;
      } else {
        // permute triangle vertices to one of two canonical forms:
        //    1. Just v2 outside of clipping volume (flag == 4)
        //    2. v1 and v2 outside of clippling volume (flag == 6)
        if (flag == 1) {
          Vertex3D tv = v0;
          v0 = v1;
          v1 = v2;
          v2 = tv;
          flag = 4;
        } else
        if (flag == 2) {
          Vertex3D tv = v0;
          v0 = v2;
          v2 = v1;
          v1 = tv;
          flag = 4;
        } else
        if (flag == 3) {
          Vertex3D tv = v0;
          v0 = v2;
          v2 = v1;
          v1 = tv;
        } else
        if (flag == 5) {
          Vertex3D tv = v0;
          v0 = v1;
          v1 = v2;
          v2 = tv;
        }
	
Lecture 12   Slide 17   6.837 Fall '00