intersectionWith method
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;
}