/// <summary> /// Builds an ortho-normal orientation transformation form the given transform. /// Scale and Translation will be removed and basis vectors will be ortho-normalized. /// NOTE: The X-Axis is untouched and Y/Z are forced to a normal-angle. /// </summary> public static Trafo3d GetOrthoNormalOrientation(this Trafo3d trafo) { var x = trafo.Forward.C0.XYZ.Normalized; // TransformDir(V3d.XAxis) var y = trafo.Forward.C1.XYZ.Normalized; // TransformDir(V3d.YAxis) var z = trafo.Forward.C2.XYZ.Normalized; // TransformDir(V3d.ZAxis) y = z.Cross(x).Normalized; z = x.Cross(y).Normalized; return(Trafo3d.FromBasis(x, y, z, V3d.Zero)); }
/// <summary> /// Returns the trafo that transforms from the coordinate system /// specified by the basis into the world coordinate system. /// </summary> public static Trafo3d FromBasis(V3f xAxis, V3f yAxis, V3f zAxis, V3f orign) { return(Trafo3d.FromBasis((V3d)xAxis, (V3d)yAxis, (V3d)zAxis, (V3d)orign)); }