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);
}
}
|