/// <summary> /// Matrix Helper /// </summary> public class FMatrixHelper { /// <summary> /// init all matrix /// </summary> public static void Init() { CreateMatMirror(); CreateMatMirrorRot180(); CreateMatMirrorRot270(); CreateMatMirrorRot90(); CreateMatRot180(); CreateMatRot270(); CreateMatRot90(); } /// <summary> /// mirror matrix /// </summary> private static Matrix m_matMirror; private static void CreateMatMirror() { Matrix _matMirror = Matrix.CreateScale(-1.0f, 1.0f, 1.0f); m_matMirror = _matMirror; } /// <summary> /// get mirror matrix /// actually, it's about Y-axis /// /// </summary> public static Matrix MatrixMirror { get { return m_matMirror; } } /// <summary> /// mirror rot180 matrix /// </summary> private static Matrix m_matMirrorRot180; private static void CreateMatMirrorRot180() { Matrix _matMirror = Matrix.CreateScale(-1.0f, 1.0f, 1.0f); Matrix _matRot = Matrix.CreateRotationZ(-(MathHelper.Pi)); m_matMirrorRot180 = _matMirror * _matRot; } /// <summary> /// get mirror rot180 matrix /// </summary> public static Matrix MatrixMirrorRot180 { get { return m_matMirrorRot180; } } /// <summary> /// mirror rot270 matrix /// </summary> private static Matrix m_matMirrorRot270; private static void CreateMatMirrorRot270() { Matrix _matMirror = Matrix.CreateScale(-1.0f, 1.0f, 1.0f); Matrix _matRot = Matrix.CreateRotationZ(-(MathHelper.PiOver2 + MathHelper.Pi)); m_matMirrorRot270 = _matMirror * _matRot; } /// <summary> /// get mirror rot270 matrix /// </summary> public static Matrix MatrixMirrorRot270 { get { return m_matMirrorRot270; } } /// <summary> /// mirror rot90 matrix /// </summary> private static Matrix m_matMirrorRot90; private static void CreateMatMirrorRot90() { Matrix _matMirror = Matrix.CreateScale(-1.0f, 1.0f, 1.0f); Matrix _matRot = Matrix.CreateRotationZ(-MathHelper.PiOver2); m_matMirrorRot90 = _matMirror * _matRot; } /// <summary> /// get mirror rot90 matrix /// </summary> public static Matrix MatrixMirrorRot90 { get { return m_matMirrorRot90; } } /// <summary> /// rot180 matrix /// </summary> private static Matrix m_matRot180; private static void CreateMatRot180() { Matrix _matRot = Matrix.CreateRotationZ(-(MathHelper.Pi)); m_matRot180 = _matRot; } /// <summary> /// get rot180 matrix /// </summary> public static Matrix MatrixRot180 { get { return m_matRot180; } } /// <summary> /// rot270 matrix /// </summary> private static Matrix m_matRot270; private static void CreateMatRot270() { Matrix _matRot = Matrix.CreateRotationZ(-(MathHelper.PiOver2 + MathHelper.Pi)); m_matRot270 = _matRot; } /// <summary> /// get rot270 matrix /// </summary> public static Matrix MatrixRot270 { get { return m_matRot270; } } /// <summary> /// rot90 matrix /// </summary> private static Matrix m_matRot90; private static void CreateMatRot90() { Matrix _matRot = Matrix.CreateRotationZ(-MathHelper.PiOver2); m_matRot90 = _matRot; } /// <summary> /// get rot90 matrix /// </summary> public static Matrix MatrixRot90 { get { return m_matRot90; } } }