intersect method

Vector2? intersect(
  1. Line other
)

Implementation

vm.Vector2? intersect(Line other) {
  final s1 = a, e1 = b, s2 = other.a, e2 = other.b;

  final a1 = e1.y - s1.y;
  final b1 = s1.x - e1.x;
  final c1 = a1 * s1.x + b1 * s1.y;

  final a2 = e2.y - s2.y;
  final b2 = s2.x - e2.x;
  final c2 = a2 * s2.x + b2 * s2.y;

  final delta = a1 * b2 - a2 * b1;
  //If lines are parallel, the result will be (NaN, NaN).
  return delta == 0
      ? null
      : new vm.Vector2(
          (b2 * c1 - b1 * c2) / delta, (a1 * c2 - a2 * c1) / delta);
}