setCorners method

void setCorners(
  1. double x0,
  2. double y0,
  3. double x1,
  4. double y1,
  5. double x2,
  6. double y2,
  7. double x3,
  8. double y3,
)

Implementation

void setCorners(double x0, double y0, double x1, double y1, double x2,
    double y2, double x3, double y3) {
  _x0 = x0;
  _y0 = y0;
  _x1 = x1;
  _y1 = y1;
  _x2 = x2;
  _y2 = y2;
  _x3 = x3;
  _y3 = y3;
  _dx1 = x1 - x2;
  _dy1 = y1 - y2;
  _dx2 = x3 - x2;
  _dy2 = y3 - y2;
  _dx3 = ((x0 - x1) + x2) - x3;
  _dy3 = ((y0 - y1) + y2) - y3;

  double a11;
  double a12;
  double a13;
  double a21;
  double a22;
  double a23;
  double a31;
  double a32;

  if (_dx3 == 0.0 && _dy3 == 0.0) {
    a11 = x1 - x0;
    a21 = x2 - x1;
    a31 = x0;
    a12 = y1 - y0;
    a22 = y2 - y1;
    a32 = y0;
    a13 = a23 = 0.0;
  } else {
    a13 = (_dx3! * _dy2 - _dx2 * _dy3!) / (_dx1 * _dy2 - _dy1 * _dx2);
    a23 = (_dx1 * _dy3! - _dy1 * _dx3!) / (_dx1 * _dy2 - _dy1 * _dx2);
    a11 = (x1 - x0) + a13 * x1;
    a21 = (x3 - x0) + a23 * x3;
    a31 = x0;
    a12 = (y1 - y0) + a13 * y1;
    a22 = (y3 - y0) + a23 * y3;
    a32 = y0;
  }

  _a = a22 - a32 * a23;
  _b = a31 * a23 - a21;
  _c = a21 * a32 - a31 * a22;
  _d = a32 * a13 - a12;
  _e = a11 - a31 * a13;
  _f = a31 * a12 - a11 * a32;
  _g = a12 * a23 - a22 * a13;
  _h = a21 * a13 - a11 * a23;
  _i = a11 * a22 - a21 * a12;

  _updateSpaces();
}