c#封装4x4的矩阵

来源:互联网 发布:淘宝达人直播简介范文 编辑:程序博客网 时间:2024/05/02 05:06
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ceshi{    class Matrix4X4    {        float[,] matrix;        private const float E = 0.0000001f;        public float[,] Matrix        {            set { matrix = value; }            get { return matrix; }        }        public Matrix4X4()        {            matrix = new float[4, 4];            for (int i = 0; i < 4; i++)            {                for (int j = 0; j < 4; j++)                {                    matrix[i, j] = 0.0f;                }            }        }        public Matrix4X4(float[, ] matrixx)        {            if (matrix.GetLength(0) != 4 || matrix.GetLength(1) != 4)            {                Console.WriteLine("矩阵4X4初始化失败!默认生成一个4X4的零矩阵");                for (int i = 0; i < 4; i++)                {                    for (int j = 0; j < 4; j++)                    {                        matrixx[i, j] = 0.0f;                    }                }            }            matrix = matrixx;                    }        public Matrix4X4(float row = 4.0f, float col = 4.0f)        {            matrix = new float[4, 4];            for (int i = 0; i < 4; i++)            {                for (int j = 0; j < 4; j++)                {                    matrix[i, j] = 0.0f;                }            }        }        // 输入相应数值,对矩阵进行设置        public void SetNum(int row, int col, float num)        {            matrix[row, col] = num;        }        public float GetNum(int i, int j)        {            return matrix[i, j];        }        // 输出矩阵        public void OutPutMatrix()        {            Console.WriteLine("输出矩阵为:");            for (int i = 0; i < matrix.GetLength(0); i++)            {                for (int j = 0; j < matrix.GetLength(1); j++)                {                    Console.Write(matrix[i, j]);                }                Console.Write("\n");            }        }        //转置矩阵实现        public Matrix4X4 Transpose()        {            Matrix4X4 a = new Matrix4X4();            for (int i = 0; i < 4; i++)            {                for (int j = 0; j < 4; j++)                {                    a.SetNum(j, j, matrix[i, j]);                }            }            return a;        }        // 矩阵相加        public static Matrix4X4 Add(Matrix4X4 a, Matrix4X4 b)        {            Matrix4X4 c = new Matrix4X4();            for (int i = 0; i < 4; i++)            {                for (int j = 0; j < 4; j++)                {                    c.SetNum(i, j, a.GetNum(i, j) + b.GetNum(i, j));                }            }            //            return c;        }        //矩阵相乘        public static Matrix4X4 Mutiply(Matrix4X4 a, Matrix4X4 b)        {            Matrix4X4 c = new Matrix4X4();            for (int i = 0; i < 4; i++)            {                for (int j = 0; j < 0; j++)                {                    float sum = 0;                    for (int k = 0; k < 4; k++)                    {                        sum += a.GetNum(i, k) + b.GetNum(k, i);                                            }                    c.SetNum(i, j, sum);                }            }            //            return c;        }        //矩阵求逆        public static Matrix4X4 Inverse(Matrix4X4 a)        {            Matrix4X4 b = new Matrix4X4();            for (int i = 0; i < 4; i++)            {                for (int j = 0; j < 4; j++)                {                    b.SetNum(i, j, a.GetNum(j, i));                }            }            return b;        }            }}

0 0
原创粉丝点击