EdgeEquation Object
class EdgeEqn {
    public final static int FRACBITS = 12;
    public int A, B, C;
    public int flag;            // used to compute bounding box

    public EdgeEqn(Vertex2D v0, Vertex2D v1) {
        double a = v0.y - v1.y;
        double b = v1.x - v0.x;
        double c = -0.5f*(a*(v0.x + v1.x) + b*(v0.y + v1.y));
        A = (int) (a * (1<<FRACBITS));
        B = (int) (b * (1<<FRACBITS));
        C = (int) (c * (1<<FRACBITS));
        flag = 0;
        if (A >= 0) flag += 8;
        if (B >= 0) flag += 1;
    }

    public void flip() {
        A = -A;
        B = -B;
        C = -C;
    }

    public int evaluate(int x, int y) {
        return (A*x + B*y + C);
    }
}
Lecture 6   Slide 14   6.837 Fall '00