Skip to content

Commit 9c92201

Browse files
committed
update: added indexer to matrices
1 parent 58b0ca3 commit 9c92201

2 files changed

Lines changed: 148 additions & 0 deletions

File tree

src/FixedMathSharp/Numerics/Fixed3x3.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,62 @@ public struct Fixed3x3 : IEquatable<Fixed3x3>
3737
/// </summary>
3838
public static readonly Fixed3x3 Zero = new Fixed3x3(new Vector3d(0f, 0f, 0f), new Vector3d(0f, 0f, 0f), new Vector3d(0f, 0f, 0f));
3939

40+
public Fixed64 this[int index]
41+
{
42+
get
43+
{
44+
return index switch
45+
{
46+
0 => m00,
47+
1 => m10,
48+
2 => m20,
49+
4 => m01,
50+
5 => m11,
51+
6 => m21,
52+
8 => m02,
53+
9 => m12,
54+
10 => m22,
55+
_ => throw new IndexOutOfRangeException("Invalid matrix index!"),
56+
};
57+
}
58+
set
59+
{
60+
switch (index)
61+
{
62+
case 0:
63+
m00 = value;
64+
break;
65+
case 1:
66+
m10 = value;
67+
break;
68+
case 2:
69+
m20 = value;
70+
break;
71+
case 4:
72+
m01 = value;
73+
break;
74+
case 5:
75+
m11 = value;
76+
break;
77+
case 6:
78+
m21 = value;
79+
break;
80+
case 8:
81+
m02 = value;
82+
break;
83+
case 9:
84+
m12 = value;
85+
break;
86+
case 10:
87+
m22 = value;
88+
break;
89+
default:
90+
throw new IndexOutOfRangeException("Invalid matrix index!");
91+
}
92+
}
93+
}
94+
95+
4096
#endregion
4197

4298
#region Constructors

src/FixedMathSharp/Numerics/Fixed4x4.cs

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,98 @@ public struct Fixed4x4 : IEquatable<Fixed4x4>
3636
Fixed64.Zero, Fixed64.Zero, Fixed64.One, Fixed64.Zero,
3737
Fixed64.Zero, Fixed64.Zero, Fixed64.Zero, Fixed64.One);
3838

39+
/// <summary>
40+
/// Returns a matrix with all elements set to zero.
41+
/// </summary>
42+
public static readonly Fixed4x4 Zero = new Fixed4x4(
43+
Fixed64.Zero, Fixed64.Zero, Fixed64.Zero, Fixed64.Zero,
44+
Fixed64.Zero, Fixed64.Zero, Fixed64.Zero, Fixed64.Zero,
45+
Fixed64.Zero, Fixed64.Zero, Fixed64.Zero, Fixed64.Zero,
46+
Fixed64.Zero, Fixed64.Zero, Fixed64.Zero, Fixed64.Zero);
47+
48+
public Fixed64 this[int index]
49+
{
50+
get
51+
{
52+
return index switch
53+
{
54+
0 => m00,
55+
1 => m10,
56+
2 => m20,
57+
3 => m30,
58+
4 => m01,
59+
5 => m11,
60+
6 => m21,
61+
7 => m31,
62+
8 => m02,
63+
9 => m12,
64+
10 => m22,
65+
11 => m32,
66+
12 => m03,
67+
13 => m13,
68+
14 => m23,
69+
15 => m33,
70+
_ => throw new IndexOutOfRangeException("Invalid matrix index!"),
71+
};
72+
}
73+
set
74+
{
75+
switch (index)
76+
{
77+
case 0:
78+
m00 = value;
79+
break;
80+
case 1:
81+
m10 = value;
82+
break;
83+
case 2:
84+
m20 = value;
85+
break;
86+
case 3:
87+
m30 = value;
88+
break;
89+
case 4:
90+
m01 = value;
91+
break;
92+
case 5:
93+
m11 = value;
94+
break;
95+
case 6:
96+
m21 = value;
97+
break;
98+
case 7:
99+
m31 = value;
100+
break;
101+
case 8:
102+
m02 = value;
103+
break;
104+
case 9:
105+
m12 = value;
106+
break;
107+
case 10:
108+
m22 = value;
109+
break;
110+
case 11:
111+
m32 = value;
112+
break;
113+
case 12:
114+
m03 = value;
115+
break;
116+
case 13:
117+
m13 = value;
118+
break;
119+
case 14:
120+
m23 = value;
121+
break;
122+
case 15:
123+
m33 = value;
124+
break;
125+
default:
126+
throw new IndexOutOfRangeException("Invalid matrix index!");
127+
}
128+
}
129+
}
130+
39131
#endregion
40132

41133
#region Constructors

0 commit comments

Comments
 (0)