public static Vector2 ProjectPoint(this Line line, Vector2 point, Vector2 direction) { var projectLine = Line.Create(point, point + direction); Vector2 cross; if (!line.Cross(projectLine, out cross)) { throw new ArgumentException(); } return(cross); }