Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Matrix
- {
- private float[] _Values;
- private int _Width;
- private int _Height;
- public int Width => _Width;
- public int Height => _Height;
- public float this[int x, int y]
- {
- get
- {
- return data[x + y * _Width];
- }
- set
- {
- data[x + y * _Width] = value;
- }
- }
- public Matrix operator+(Matrix left, Matrix right)
- {
- if(left.width == right.Width && left.Height == right.Height)
- {
- Matrix result = new Matrix(left.Width, right.Height);
- var elementsCount = left.Width * left.Height;
- for(int i = 0; i < elementsCount; i++)
- {
- result._Values[i] = right._Values[i] + left._Values[i];
- }
- return result;
- }
- else
- {
- return null;
- }
- }
- public Matrix operator*(Matrix left, Matrix right)
- {
- if(left.Height == right.Width)
- {
- Matrix result = new Matrix(left.Width, right.Height);
- for(int x = 0; x < left.Width; x++)
- {
- for(int y = 0; y < right.Height; y++)
- {
- result[x, y] = 0;
- for(int i = 0; i < left.Height; i++)
- {
- result[x, y] += left[x, i] * right[i, y];
- }
- }
- }
- return result;
- }
- else
- {
- return null;
- }
- }
- public Matrix(int width, int height)
- {
- _Width = width;
- _Height = height;
- _Values = new float[width * height];
- }
Add Comment
Please, Sign In to add comment