public static Vector3D ProjectOn(this Vector3D vector, PlaneD plane) { return(vector - plane.SignedDistanceTo(vector) * plane.Normal); }