sobota 29. prosince 2012

C# třída pro práci s (transformačními) maticemi

Jelikož programovací jazyk C# nenabízí ve standardních třídách vhodnou třídu pro práci s maticemi, natož pak s transformačními maticemi, musel jsem si vytvořit vlastní třídu. Třída obsahuje mimo základní operace s maticemi, jako je sčítání, maticové násobení, násobení skalárem a transpozici i operace spojené s transformačními maticemi. Jmenovitě se jedná o generování rotačních matic okolo osy $x$, $y$ a $z$, rotační matice podle Eulerových úhlů v notaci $ZYX$, translační matice a transformační matice podle parametrů z Denavit-Hartnebergovy notace. Rotační matice jsou dimenze $4\times 4$, tedy v homogenních souřadnicích. Třída přetěžuje operátory sčítání, násobení a indexového přístupu pro maximálně intuitivní práci s jednotlivými instancemi třídy. Její aktuální verze s podrobnější dokumentací je přístupná na mém repositáři na githubu.

Seznam funkcí implementovaných ve třídě:
        public Matrix(int rows, int cols)
        public Matrix Copy()
        public static Matrix ZeroMatrix(int rows, int cols)
        public static Matrix IdentMatrix(int n)
        public override string ToString()
        public static Matrix Transpose(Matrix m)
        public static Matrix Multiply(Matrix m1, Matrix m2)
        private static Matrix ScalarMultiply(double n, Matrix m)
        private static Matrix Add(Matrix m1, Matrix m2)
        public static Matrix EulerRotaionMatrix(double yaw, double pitch, double roll)
        public static Matrix RotaionMatrixZ4(double angle)
        public static Matrix RotaionMatrixX4(double angle)
        public static Matrix RotaionMatrixY4(double angle)
        public static Matrix TranslationMatrix(double xTrans, double yTrans, double zTrans)
        public static Matrix DHTransMatrix(double[][] DHparams)

Žádné komentáře:

Okomentovat