intersection static method

Coordinate? intersection(
  1. Coordinate p1,
  2. Coordinate p2,
  3. Coordinate q1,
  4. Coordinate q2,
)

Implementation

static Coordinate? intersection(
    Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2) {
  DD px = DD.valueOf(p1.y).selfSubtract2(p2.y);
  DD py = DD.valueOf(p2.x).selfSubtract2(p1.x);
  DD pw = DD
      .valueOf(p1.x)
      .selfMultiply2(p2.y)
      .selfSubtract(DD.valueOf(p2.x).selfMultiply2(p1.y));
  DD qx = DD.valueOf(q1.y).selfSubtract2(q2.y);
  DD qy = DD.valueOf(q2.x).selfSubtract2(q1.x);
  DD qw = DD
      .valueOf(q1.x)
      .selfMultiply2(q2.y)
      .selfSubtract(DD.valueOf(q2.x).selfMultiply2(q1.y));
  DD x = py.multiply(qw).selfSubtract(qy.multiply(pw));
  DD y = qx.multiply(pw).selfSubtract(px.multiply(qw));
  DD w = px.multiply(qy).selfSubtract(qx.multiply(py));
  double xInt = x.selfDivide(w).doubleValue();
  double yInt = y.selfDivide(w).doubleValue();
  if (xInt.isNaN || xInt.isInfinite || yInt.isNaN || yInt.isInfinite) {
    return null;
  }
  return Coordinate(xInt, yInt);
}