コード例 #1
0
        /// <summary>
        /// Takes the current plane as a matrix and returns a rotated version
        /// </summary>
        /// <param name="basisMatrix"></param>
        /// <param name="radians"></param>
        /// <returns></returns>
        public static DWMatrix RotateNRadiansAntiClockwise(DWMatrix basisMatrix, double radians)
        {
            double ix = basisMatrix.IX * Math.Cos(radians) - basisMatrix.IY * Math.Sin(radians);
            double iy = basisMatrix.IX * Math.Sin(radians) + basisMatrix.IY * Math.Cos(radians);
            double jx = basisMatrix.JX * Math.Cos(radians) - basisMatrix.JY * Math.Sin(radians);
            double jy = basisMatrix.JX * Math.Sin(radians) + basisMatrix.JY * Math.Cos(radians);

            return(new DWMatrix(ix, iy, jx, jy));
        }
コード例 #2
0
        /// <summary>
        /// Uses matrix multiplication on a transformation matrix and the current plane
        /// </summary>
        /// <param name="transformMatrix">The wanted transformation</param>
        /// <param name="basisMatrix">The basis vectors in a matrix (i-hat & j-hat)</param>
        /// <returns>A new matrix giving the new basis vectors</returns>
        public static DWMatrix MakeLinearTransformation(DWMatrix transformMatrix, DWMatrix basisMatrix)
        {
            double ix = basisMatrix.IX * transformMatrix.IX + basisMatrix.IY * transformMatrix.JX;
            double iy = basisMatrix.IX * transformMatrix.IY + basisMatrix.IY * transformMatrix.JY;

            double jx = basisMatrix.JX * transformMatrix.IX + basisMatrix.JY * transformMatrix.JX;
            double jy = basisMatrix.JX * transformMatrix.IY + basisMatrix.JY * transformMatrix.JY;

            return(new DWMatrix(ix, iy, jx, jy));
        }
コード例 #3
0
        /// <summary>
        /// Get the inverse matrix of a given matrix
        /// </summary>
        /// <param name="m"></param>
        /// <returns>The inverse DWMatrix</returns>
        public static DWMatrix GetInverseMatrix(DWMatrix m)
        {
            double ix = m.JY;
            double iy = -m.IY;
            double jx = -m.JX;
            double jy = m.IX;

            DWMatrix newMatrix = new DWMatrix(ix, iy, jx, jy);

            return(newMatrix / GetDeterminant(newMatrix));
        }
コード例 #4
0
 /// <summary>
 /// Gets the determinant value of a given matrix
 /// </summary>
 /// <param name="m"></param>
 /// <returns>The determinant value of a matrix</returns>
 public static double GetDeterminant(DWMatrix m) => (m.IX * m.JY) - (m.JX * m.IY);