/// <summary> /// Create an <see cref="IsometricEmbedding" /> such that if a 2D point is converted to 3D via the embedding and /// then projected back to 2D via this projection, the result is the original 2D point. /// </summary> /// <param name="pointInEmbeddedSpace"> /// a point in 3D that is contained in the plane represented by the embedding to be returned /// </param> public IsometricEmbedding GetCorrespondingIsometricEmbeddingContaining(Point pointInEmbeddedSpace) { var normalDirection = XAxis.CrossProduct(YAxis); var origin = pointInEmbeddedSpace.VectorFromOrigin.ProjectOntoDirection(normalDirection).ImageOfOrigin; return(new IsometricEmbedding(XAxis, YAxis, origin)); }