import Vertex2D;

class EdgeEqn {
  public final static int FRACBITS = 12;
  public int A, B, C;

  public EdgeEqn(){
  A = 0;
  B = 0;
  C = 0;
    }
  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));
  }

  public void flip() {
    A = -A;
    B = -B;
    C = -C;
  }

  public int evaluate(int x, int y) {
    return (A*x + B*y + C);
      }
  public double eval_on_x(int y) {
    return (double) ((-B*y - C)/A);
    }
}
