intersectionWith method

PointD? intersectionWith(
  1. Line line
)

Implementation

PointD? intersectionWith(Line line) {
  final double yDiff = target.y - source.y;
  final double xDiff = source.x - target.x;
  final double diff = yDiff * (source.x) + xDiff * (source.y);
  final double lineYDiff = line.target.y - line.source.y;
  final double lineXDiff = line.source.x - line.target.x;
  final double lineDiff =
      lineYDiff * (line.source.x) + lineXDiff * (line.source.y);
  final double determinant = yDiff * lineXDiff - lineYDiff * xDiff;
  return determinant == 0
      ? PointD((lineXDiff * diff - xDiff * lineDiff) / determinant,
          (yDiff * lineDiff - lineYDiff * diff) / determinant)
      : null;
}