30using System.Runtime.InteropServices;
32using System.Xml.Serialization;
55 [StructLayout(LayoutKind.Sequential, Size = Matrix3x3.Size)]
56 [AdvBrowsableOrder(
"Rx,Ry,Rz")]
57#if !CompactFramework && !WindowsCE && !PocketPC && !XBOX360 && !SILVERLIGHT && !WINDOWS_PHONE && !NETFX_CORE
94 #region static methods
98 Copy(ref matrix, destArray, 0);
104 destArray[index] = matrix.m00;
105 destArray[++index] = matrix.m01;
106 destArray[++index] = matrix.m02;
108 destArray[++index] = matrix.m10;
109 destArray[++index] = matrix.m11;
110 destArray[++index] = matrix.m12;
112 destArray[++index] = matrix.m20;
113 destArray[++index] = matrix.m21;
114 destArray[++index] = matrix.m22;
118 Copy(sourceArray, 0, out result);
124 result.m00 = sourceArray[index];
125 result.m01 = sourceArray[++index];
126 result.m02 = sourceArray[++index];
128 result.m10 = sourceArray[++index];
129 result.m11 = sourceArray[++index];
130 result.m12 = sourceArray[++index];
132 result.m20 = sourceArray[++index];
133 result.m21 = sourceArray[++index];
134 result.m22 = sourceArray[++index];
145 destArray[index] = matrix.m00;
146 destArray[++index] = matrix.m10;
147 destArray[++index] = matrix.m20;
149 destArray[++index] = matrix.m01;
150 destArray[++index] = matrix.m11;
151 destArray[++index] = matrix.m21;
153 destArray[++index] = matrix.m02;
154 destArray[++index] = matrix.m12;
155 destArray[++index] = matrix.m22;
165 result.m00 = sourceArray[index];
166 result.m10 = sourceArray[++index];
167 result.m20 = sourceArray[++index];
169 result.m01 = sourceArray[++index];
170 result.m11 = sourceArray[++index];
171 result.m21 = sourceArray[++index];
173 result.m02 = sourceArray[++index];
174 result.m12 = sourceArray[++index];
175 result.m22 = sourceArray[++index];
180 dest.m00 = source.m00;
181 dest.m01 = source.m01;
182 dest.m02 = source.m02;
184 dest.m10 = source.m10;
185 dest.m11 = source.m11;
186 dest.m12 = source.m12;
188 dest.m20 = source.m20;
189 dest.m21 = source.m21;
190 dest.m22 = source.m22;
194 dest.m00 = source.m00;
195 dest.m01 = source.m01;
197 dest.m10 = source.m10;
198 dest.m11 = source.m11;
203 destArray[0] = source.m00;
204 destArray[1] = source.m10;
206 destArray[3] = source.m20;
208 destArray[4] = source.m01;
209 destArray[5] = source.m11;
211 destArray[7] = source.m21;
213 destArray[12] = source.m02;
214 destArray[13] = source.m12;
216 destArray[15] = source.m22;
223 Lerp(ref left, ref right, ref amount, out result);
228 result.m00 = (right.m00 - left.m00) * amount + left.m00;
229 result.m01 = (right.m01 - left.m01) * amount + left.m01;
230 result.m02 = (right.m02 - left.m02) * amount + left.m02;
232 result.m10 = (right.m10 - left.m10) * amount + left.m10;
233 result.m11 = (right.m11 - left.m11) * amount + left.m11;
234 result.m12 = (right.m12 - left.m12) * amount + left.m12;
236 result.m20 = (right.m20 - left.m20) * amount + left.m20;
237 result.m21 = (right.m21 - left.m21) * amount + left.m21;
238 result.m22 = (right.m22 - left.m22) * amount + left.m22;
268 Scalar m00 = left.m00 * right.m00 + left.m01 * right.m10 + left.m02 * right.m20;
269 Scalar m01 = left.m00 * right.m01 + left.m01 * right.m11 + left.m02 * right.m21;
270 Scalar m02 = left.m00 * right.m02 + left.m01 * right.m12 + left.m02 * right.m22;
272 Scalar m10 = left.m10 * right.m00 + left.m11 * right.m10 + left.m12 * right.m20;
273 Scalar m11 = left.m10 * right.m01 + left.m11 * right.m11 + left.m12 * right.m21;
274 Scalar m12 = left.m10 * right.m02 + left.m11 * right.m12 + left.m12 * right.m22;
276 Scalar m20 = left.m20 * right.m00 + left.m21 * right.m10 + left.m22 * right.m20;
277 Scalar m21 = left.m20 * right.m01 + left.m21 * right.m11 + left.m22 * right.m21;
278 Scalar m22 = left.m20 * right.m02 + left.m21 * right.m12 + left.m22 * right.m22;
304 result.
m00 = left.
m00 * scalar;
305 result.
m01 = left.
m01 * scalar;
306 result.
m02 = left.
m02 * scalar;
308 result.
m10 = left.
m10 * scalar;
309 result.
m11 = left.
m11 * scalar;
310 result.
m12 = left.
m12 * scalar;
312 result.
m20 = left.
m20 * scalar;
313 result.
m21 = left.
m21 * scalar;
314 result.
m22 = left.
m22 * scalar;
321 result.m00 = left.m00 * scalar;
322 result.m01 = left.m01 * scalar;
323 result.m02 = left.m02 * scalar;
325 result.m10 = left.m10 * scalar;
326 result.m11 = left.m11 * scalar;
327 result.m12 = left.m12 * scalar;
329 result.m20 = left.m20 * scalar;
330 result.m21 = left.m21 * scalar;
331 result.m22 = left.m22 * scalar;
360 Scalar m00 = left.m00 * right.m00 + left.m01 * right.m10;
361 Scalar m01 = left.m00 * right.m01 + left.m01 * right.m11;
363 Scalar m10 = left.m10 * right.m00 + left.m11 * right.m10;
364 Scalar m11 = left.m10 * right.m01 + left.m11 * right.m11;
366 Scalar m20 = left.m20 * right.m00 + left.m21 * right.m10;
367 Scalar m21 = left.m20 * right.m01 + left.m21 * right.m11;
371 result.m02 = left.m02;
375 result.m12 = left.m12;
379 result.m22 = left.m22;
410 Scalar m00 = left.m00 * right.m00 + left.m01 * right.m10;
411 Scalar m01 = left.m00 * right.m01 + left.m01 * right.m11;
412 Scalar m02 = left.m00 * right.m02 + left.m01 * right.m12;
414 Scalar m10 = left.m10 * right.m00 + left.m11 * right.m10;
415 Scalar m11 = left.m10 * right.m01 + left.m11 * right.m11;
416 Scalar m12 = left.m10 * right.m02 + left.m11 * right.m12;
426 result.m20 = right.m20;
427 result.m21 = right.m21;
428 result.m22 = right.m22;
460 result.m00 = left.m00 + right.m00;
461 result.m01 = left.m01 + right.m01;
462 result.m02 = left.m02 + right.m02;
464 result.m10 = left.m10 + right.m10;
465 result.m11 = left.m11 + right.m11;
466 result.m12 = left.m12 + right.m12;
468 result.m20 = left.m20 + right.m20;
469 result.m21 = left.m21 + right.m21;
470 result.m22 = left.m22 + right.m22;
476 Add(ref left, ref right, out result);
481 result.m00 = left.m00 + right.m00;
482 result.m01 = left.m01 + right.m01;
483 result.m02 = right.m02;
485 result.m10 = left.m10 + right.m10;
486 result.m11 = left.m11 + right.m11;
487 result.m12 = right.m12;
489 result.m20 = right.m20;
490 result.m21 = right.m21;
491 result.m22 = 1 + right.m22;
496 Add(ref left, ref right, out result);
501 result.m00 = left.m00 + right.m00;
502 result.m01 = left.m01 + right.m01;
503 result.m02 = left.m02;
505 result.m10 = left.m10 + right.m10;
506 result.m11 = left.m11 + right.m11;
507 result.m12 = left.m12;
509 result.m20 = left.m20;
510 result.m21 = left.m21;
511 result.m22 = left.m22 + 1;
542 result.m00 = left.m00 - right.m00;
543 result.m01 = left.m01 - right.m01;
544 result.m02 = left.m02 - right.m02;
546 result.m10 = left.m10 - right.m10;
547 result.m11 = left.m11 - right.m11;
548 result.m12 = left.m12 - right.m12;
550 result.m20 = left.m20 - right.m20;
551 result.m21 = left.m21 - right.m21;
552 result.m22 = left.m22 - right.m22;
559 Subtract(ref left, ref right, out result);
564 result.m00 = left.m00 - right.m00;
565 result.m01 = left.m01 - right.m01;
566 result.m02 = -right.m02;
568 result.m10 = left.m10 - right.m10;
569 result.m11 = left.m11 - right.m11;
570 result.m12 = -right.m12;
572 result.m20 = -right.m20;
573 result.m21 = -right.m21;
574 result.m22 = 1 - right.m22;
579 Subtract(ref left, ref right, out result);
584 result.m00 = left.m00 - right.m00;
585 result.m01 = left.m01 - right.m01;
586 result.m02 = left.m02;
588 result.m10 = left.m10 - right.m10;
589 result.m11 = left.m11 - right.m11;
590 result.m12 = left.m12;
592 result.m20 = left.m20;
593 result.m21 = left.m21;
594 result.m22 = left.m22 - 1;
622 Negate(ref source, out source);
626 result.m00 = -source.m00;
627 result.m01 = -source.m01;
628 result.m02 = -source.m02;
630 result.m10 = -source.m10;
631 result.m11 = -source.m11;
632 result.m12 = -source.m12;
634 result.m20 = -source.m20;
635 result.m21 = -source.m21;
636 result.m22 = -source.m22;
642 Invert(ref source, out result);
656 Scalar m11m22m12m21 = (
m11 * source.m22 -
m12 * source.m21);
657 Scalar m10m22m12m20 = (source.m10 * source.m22 -
m12 * source.m20);
658 Scalar m10m21m11m20 = (source.m10 * source.m21 -
m11 * source.m20);
662 Scalar detInv = 1 / (source.m00 * (m11m22m12m21) -
m01 * (m10m22m12m20) +
m02 * (m10m21m11m20));
665 result.m01 = detInv * (-(
m01 * source.m22 -
m02 * source.m21));
668 result.m11 = detInv * (source.m00 * source.m22 -
m02 * source.m20);
669 result.m12 = detInv * (-(source.m00 *
m12 -
m02 * source.m10));
671 result.m21 = detInv * (-(source.m00 * source.m21 -
m01 * source.m20));
672 result.m22 = detInv * (source.m00 *
m11 -
m01 * source.m10);
675 result.m00 = detInv * (m11m22m12m21);
676 result.m10 = detInv * (-(m10m22m12m20));
677 result.m20 = detInv * (m10m21m11m20);
691 source.m00 * (source.m11 * source.m22 - source.m12 * source.m21) -
692 source.m01 * (source.m10 * source.m22 - source.m12 * source.m20) +
693 source.m02 * (source.m10 * source.m21 - source.m11 * source.m20);
708 result.m00 = source.m00;
709 result.m01 = source.m10;
710 result.m02 = source.m20;
713 result.m11 = source.m11;
714 result.m12 = source.m21;
718 result.m22 = source.m22;
737 Scalar m11m22m12m21 = (
m11 * source.m22 -
m12 * source.m21);
738 Scalar m10m22m12m20 = (source.m10 * source.m22 -
m12 * source.m20);
739 Scalar m10m21m11m20 = (source.m10 * source.m21 -
m11 * source.m20);
742 result.m01 = (-(
m01 * source.m22 -
m02 * source.m21));
745 result.m11 = (source.m00 * source.m22 -
m02 * source.m20);
746 result.m12 = (-(source.m00 *
m12 -
m02 * source.m10));
748 result.m21 = (-(source.m00 * source.m21 -
m01 * source.m20));
749 result.m22 = (source.m00 *
m11 -
m01 * source.m10);
752 result.m00 = (m11m22m12m21);
753 result.m10 = (-(m10m22m12m20));
754 result.m20 = (m10m21m11m20);
771 Scalar m11m22m12m21 = (
m11 * source.m22 -
m12 * source.m21);
772 Scalar m10m22m12m20 = (source.m10 * source.m22 -
m12 * source.m20);
773 Scalar m10m21m11m20 = (source.m10 * source.m21 -
m11 * source.m20);
776 result.m01 = ((
m01 * source.m22 -
m02 * source.m21));
779 result.m11 = (-(source.m00 * source.m22 -
m02 * source.m20));
780 result.m12 = ((source.m00 *
m12 -
m02 * source.m10));
782 result.m21 = ((source.m00 * source.m21 -
m01 * source.m20));
783 result.m22 = (-(source.m00 *
m11 -
m01 * source.m10));
786 result.m00 = (-(m11m22m12m21));
787 result.m10 = ((m10m22m12m20));
788 result.m20 = (-(m10m21m11m20));
797 Copy(array, 0, out result);
817 result.m01 = -result.m10;
818 result.m11 = result.m00;
819 result.m02 = translation.X;
820 result.m12 = translation.Y;
857 result.m12 = -result.m21;
860 result.m22 = result.m11;
889 result.m02 = -result.m20;
896 result.m22 = result.m00;
926 result.m01 = -result.m10;
929 result.m11 = result.m00;
950 yAngle = (
Scalar)Math.Atan(axis.
Z / axis.
Y);
955 zAngle = (
Scalar)Math.Atan(axis.
Y / axis.
X);
956 yAngle = (
Scalar)Math.Atan(axis.
Z / Math.Sqrt(axis.
X * axis.
X + axis.
Y * axis.
Y));
984 result.
m00 = scale.
X;
989 result.
m11 = scale.
Y;
994 result.
m22 = scale.
Z;
1000 result.m00 = scale.X;
1005 result.m11 = scale.Y;
1010 result.m22 = scale.Z;
1015 result.
m00 = scale.
X;
1020 result.
m11 = scale.
Y;
1030 result.m00 = scale.X;
1035 result.m11 = scale.Y;
1048 result.
m02 = value.
X;
1052 result.
m12 = value.
Y;
1064 result.m02 = value.X;
1068 result.m12 = value.Y;
1080 result.
m02 = value.
X;
1084 result.
m12 = value.
Y;
1096 result.m02 = value.X;
1100 result.m12 = value.Y;
1150#if !CompactFramework && !WindowsCE && !PocketPC && !XBOX360 && !SILVERLIGHT
1169 left.m00 == right.m00 && left.m01 == right.m01 && left.m02 == right.m02 &&
1170 left.m10 == right.m10 && left.m11 == right.m11 && left.m12 == right.m12 &&
1171 left.m20 == right.m20 && left.m21 == right.m21 && left.m22 == right.m22;
1188 #region Constructors
1197 this.m00 =
m00; this.m01 =
m01; this.m02 =
m02;
1198 this.m10 =
m10; this.m11 =
m11; this.m12 =
m12;
1199 this.m20 =
m20; this.m21 =
m21; this.m22 =
m22;
1208 [InstanceConstructor(
"Rx,Ry,Rz")]
1211 this.m00 = xAxis.
X; this.m01 = xAxis.
Y; this.m02 = xAxis.
Z;
1212 this.m10 = yAxis.
X; this.m11 = yAxis.
Y; this.m12 = yAxis.
Z;
1213 this.m20 = zAxis.
X; this.m21 = zAxis.
Y; this.m22 = zAxis.
Z;
1218 Copy(values, index, out
this);
1223#if !WINDOWS_STOREAPP
1224 [
System.ComponentModel.Description(
"The First row of the Matrix3x3")]
1244#if !WINDOWS_STOREAPP
1245 [
System.ComponentModel.Description(
"The Second row of the Matrix3x3")]
1265#if !WINDOWS_STOREAPP
1266 [
System.ComponentModel.Description(
"The Third row of the Matrix3x3")]
1373 Invert(ref
this, out result);
1381 #endregion Properties
1386 switch (columnIndex)
1400 switch (columnIndex)
1476 Copy(ref
this, array, index);
1484 Copy(array, index, out
this);
1512 m00.GetHashCode() ^
m01.GetHashCode() ^
m02.GetHashCode() ^
1513 m10.GetHashCode() ^
m11.GetHashCode() ^
m12.GetHashCode() ^
1514 m20.GetHashCode() ^
m21.GetHashCode() ^
m22.GetHashCode();
1525 return Equals(ref
this, ref other);
1538 public Scalar this[
int rowIndex,
int columnIndex]
1548 return pM[(
ColumnCount * rowIndex) + columnIndex];
1554 ThrowHelper.CheckIndex(
"rowIndex", rowIndex,
RowCount);
1555 ThrowHelper.CheckIndex(
"columnIndex", columnIndex,
ColumnCount);
1560 pM[(
ColumnCount * rowIndex) + columnIndex] = value;
1572 public Scalar this[
int index]
1576 ThrowHelper.CheckIndex(
"index", index,
Count);
1579 fixed (
Scalar* pMatrix = &this.m00)
1581 return pMatrix[index];
1587 ThrowHelper.CheckIndex(
"index", index,
Count);
1590 fixed (
Scalar* pMatrix = &this.m00)
1592 pMatrix[index] = value;
1599 #region Operator overloads
1686 result.
m00 = matrix.
m00 * scalar;
1687 result.
m01 = matrix.
m01 * scalar;
1688 result.
m02 = matrix.
m02 * scalar;
1689 result.
m10 = matrix.
m10 * scalar;
1690 result.
m11 = matrix.
m11 * scalar;
1691 result.
m12 = matrix.
m12 * scalar;
1692 result.
m20 = matrix.
m20 * scalar;
1693 result.
m21 = matrix.
m21 * scalar;
1694 result.
m22 = matrix.
m22 * scalar;
1708 result.
m00 = matrix.
m00 * scalar;
1709 result.
m01 = matrix.
m01 * scalar;
1710 result.
m02 = matrix.
m02 * scalar;
1711 result.
m10 = matrix.
m10 * scalar;
1712 result.
m11 = matrix.
m11 * scalar;
1713 result.
m12 = matrix.
m12 * scalar;
1714 result.
m20 = matrix.
m20 * scalar;
1715 result.
m21 = matrix.
m21 * scalar;
1716 result.
m22 = matrix.
m22 * scalar;
1747 Add(ref left, ref right, out result);
1753 Add(ref left, ref right, out result);
1783 Subtract(ref left, ref right, out result);
1789 Subtract(ref left, ref right, out result);
1801 result.
m00 = -matrix.
m00;
1802 result.
m01 = -matrix.
m01;
1803 result.
m02 = -matrix.
m02;
1804 result.
m10 = -matrix.
m10;
1805 result.
m11 = -matrix.
m11;
1806 result.
m12 = -matrix.
m12;
1807 result.
m20 = -matrix.
m20;
1808 result.
m21 = -matrix.
m21;
1809 result.
m22 = -matrix.
m22;
1828 return !(left == right);
static Scalar Cos(Scalar d)
static Scalar Sin(Scalar a)
static string CreateMatrixFormatableString(int RowCount, int ColumnCount)
static string CreateMatrixFormatString(int RowCount, int ColumnCount)
static Exception GetThrowIndex(string name, int count)
static void CheckCopy(Scalar[] array, int index, int count)
int Count
Gets a 32-bit integer that represents the total number of elements in all the dimensions of IAdvanceV...
int RowCount
Gets a 32-bit integer that represents the total number of Rows in the IMatrix.
int ColumnCount
Gets a 32-bit integer that represents the total number of Columns in the IMatrix.
A 2x2 matrix which can represent rotations for 2D vectors.
A 3x3 matrix which can represent rotations around axes.
static void Subtract(ref Matrix3x3 left, ref Matrix2x2 right, out Matrix3x3 result)
static readonly string FormatString
void CopyTransposedTo(Scalar[] array, int index)
static void Add(ref Matrix2x2 left, ref Matrix3x3 right, out Matrix3x3 result)
static void Subtract(ref Matrix2x2 left, ref Matrix3x3 right, out Matrix3x3 result)
static void Multiply(ref Matrix3x3 left, ref Matrix2x2 right, out Matrix3x3 result)
Matrix3x3(Scalar m00, Scalar m01, Scalar m02, Scalar m10, Scalar m11, Scalar m12, Scalar m20, Scalar m21, Scalar m22)
Creates a new Matrix3 with all the specified parameters.
void SetColumn(int columnIndex, Vector3D value)
static void FromScale(ref Vector3D scale, out Matrix3x3 result)
void CopyTo(Scalar[] array, int index)
Copies all the elements of the IAdvanceValueType to the specified one-dimensional Array of Scalar.
static void Invert(ref Matrix3x3 source, out Matrix3x3 result)
void SetRow(int rowIndex, Vector3D value)
static readonly string FormatableString
static void FromRotationX(ref Scalar radianAngle, out Matrix3x3 result)
Matrix3x3(Scalar[] values, int index)
static void CopyTranspose(ref Matrix3x3 matrix, Scalar[] destArray, int index)
static void GetDeterminant(ref Matrix3x3 source, out Scalar result)
static Matrix3x3 FromEulerAnglesXYZ(Scalar yaw, Scalar pitch, Scalar roll)
Constructs this Matrix from 3 euler angles, in degrees.
static Matrix3x3 Invert(Matrix3x3 source)
static Matrix3x3 operator+(Matrix3x3 left, Matrix3x3 right)
Used to add two matrices together.
static Matrix3x3 Multiply(Matrix3x3 left, Scalar scalar)
Used to multiply a Matrix3x3 object by a scalar value..
static void FromTranslate2D(ref Vector2D value, out Matrix3x3 result)
static void Multiply(ref Matrix2x2 left, ref Matrix3x3 right, out Matrix3x3 result)
static void Transpose(ref Matrix3x3 source, out Matrix3x3 result)
static Matrix3x3 Transpose(Matrix3x3 source)
static Matrix3x3 GetCofactor(Matrix3x3 source)
Matrix3x3 Transposed
Swap the rows of the matrix with the columns.
static void GetAdjoint(ref Matrix3x3 source, out Matrix3x3 result)
static Matrix3x3 Add(Matrix2x2 left, Matrix3x3 right)
static Matrix3x3 Multiply(Matrix2x2 left, Matrix3x3 right)
Used to multiply (concatenate) a Matrix3x3 and a Matrix2x2.
static void FromRotationY(ref Scalar radianAngle, out Matrix3x3 result)
static readonly Matrix3x3 Identity
static Matrix3x3 Subtract(Matrix3x3 left, Matrix3x3 right)
Used to subtract two matrices.
Vector3D GetColumn(int columnIndex)
static void Multiply(ref Matrix3x3 left, ref Matrix3x3 right, out Matrix3x3 result)
override int GetHashCode()
override bool Equals(object obj)
static Matrix3x3 FromRotationZ(Scalar radianAngle)
static Matrix3x3 Add(Matrix3x3 left, Matrix2x2 right)
string ToString(string format)
turns the object into a string representation of itself with a special format for each Scaler in it.
Scalar[,] ToMatrixArray()
static Matrix3x3 operator*(Matrix3x3 left, Matrix3x3 right)
Multiply (concatenate) two Matrix3 instances together.
static bool TryParse(string s, out Matrix3x3 result)
static Matrix3x3 FromScale(Vector2D scale)
Matrix3x3(Vector3D xAxis, Vector3D yAxis, Vector3D zAxis)
Create a new Matrix from 3 Vertex3 objects.
static Matrix3x3 Negate(Matrix3x3 source)
Negates a Matrix3x3.
static void FromShear3D(ref Vector2D value, out Matrix3x3 result)
static void FromScale(ref Vector2D scale, out Matrix3x3 result)
string ToStringInternal(string FormatString)
static Matrix3x3 FromRotationX(Scalar radianAngle)
int IAdvanceValueType. Count
static void Negate(ref Matrix3x3 source)
static void Add(ref Matrix3x3 left, ref Matrix2x2 right, out Matrix3x3 result)
static readonly Matrix3x3 Zero
static bool Equals(Matrix3x3 left, Matrix3x3 right)
static void Copy2DToOpenGlMatrix(ref Matrix3x3 source, Scalar[] destArray)
static void FromTransformation(ref Scalar rotation, ref Vector2D translation, out Matrix3x3 result)
static void Copy(ref Matrix3x3 matrix, Scalar[] destArray, int index)
static Matrix3x3 FromTransposedArray(Scalar[] array)
static Scalar GetDeterminant(Matrix3x3 source)
static void CopyTranspose(ref Matrix3x3 matrix, Scalar[] destArray)
static void Copy(ref Matrix4x4 source, out Matrix3x3 dest)
static Matrix3x3 Parse(string s)
Vector3D GetRow(int rowIndex)
void CopyTransposedFrom(Scalar[] array, int index)
static Matrix3x3 Add(Matrix3x3 left, Matrix3x3 right)
Used to add two matrices together.
static void CopyTranspose(Scalar[] sourceArray, out Matrix3x3 result)
const int RowCount
The number of rows.
static Matrix3x3 FromScale(Vector3D scale)
const int Count
The number of Scalar values in the class.
Scalar[] ToArray()
Copies the elements of the IAdvanceValueType to a new array of Scalar .
static void Subtract(ref Matrix3x3 left, ref Matrix3x3 right, out Matrix3x3 result)
static Matrix3x3 FromArray(Scalar[] array)
static Matrix3x3 Subtract(Matrix2x2 left, Matrix3x3 right)
static void CopyTranspose(Scalar[] sourceArray, int index, out Matrix3x3 result)
static void Copy(ref Matrix2x2 source, ref Matrix3x3 dest)
static Matrix3x3 operator-(Matrix3x3 left, Matrix3x3 right)
Used to subtract two matrices.
static Matrix3x3 Multiply(Matrix3x3 left, Matrix3x3 right)
Used to multiply (concatenate) two Matrix4x4s.
static void GetCofactor(ref Matrix3x3 source, out Matrix3x3 result)
static Matrix3x3 FromLookAt(Vector3D origin, Vector3D positiveZAxis, Vector3D onPositiveY)
static Matrix3x3 FromTransformation(Scalar rotation, Vector2D translation)
static void Copy(ref Matrix3x3 matrix, Scalar[] destArray)
static Matrix3x3 Subtract(Matrix3x3 left, Matrix2x2 right)
Matrix3x3(Scalar[] values)
static void Multiply(ref Matrix3x3 left, ref Scalar scalar, out Matrix3x3 result)
static Matrix3x3 FromShear3D(Vector2D value)
static bool Equals(ref Matrix3x3 left, ref Matrix3x3 right)
const int ColumnCount
The number of columns.
static Matrix3x3 GetAdjoint(Matrix3x3 source)
static bool operator==(Matrix3x3 left, Matrix3x3 right)
Test two matrices for (value) equality
static Matrix3x3 FromRotationY(Scalar radianAngle)
static void Add(ref Matrix3x3 left, ref Matrix3x3 right, out Matrix3x3 result)
static Matrix3x3 Lerp(Matrix3x3 left, Matrix3x3 right, Scalar amount)
void CopyFrom(Scalar[] array, int index)
Copies all the elements of the IAdvanceValueType, of the specified one-dimensional Array to the IAdva...
override string ToString()
static Matrix3x3 FromRotationAxis(Scalar radianAngle, Vector3D axis)
static void Negate(ref Matrix3x3 source, out Matrix3x3 result)
const int Size
The Size of the class in bytes;
static bool operator!=(Matrix3x3 left, Matrix3x3 right)
static void FromRotationZ(ref Scalar radianAngle, out Matrix3x3 result)
static Matrix3x3 Multiply(Matrix3x3 left, Matrix2x2 right)
Used to multiply (concatenate) a Matrix3x3 and a Matrix2x2.
static void Copy(Scalar[] sourceArray, out Matrix3x3 result)
static Scalar GetDeterminant(Vector3D Rx, Vector3D Ry, Vector3D Rz)
static Matrix3x3 FromRotationAxisUsingAtan(Scalar radianAngle, Vector3D axis)
static Scalar GetDeterminant(Scalar m00, Scalar m01, Scalar m02, Scalar m10, Scalar m11, Scalar m12, Scalar m20, Scalar m21, Scalar m22)
bool Equals(Matrix3x3 other)
Matrix4x4 ToMatrix4x4From2D()
static void Lerp(ref Matrix3x3 left, ref Matrix3x3 right, ref Scalar amount, out Matrix3x3 result)
Scalar[] ToTransposedArray()
static Matrix3x3 FromTranslate2D(Vector2D value)
static void Copy(Scalar[] sourceArray, int index, out Matrix3x3 result)
static readonly Matrix4x4 Identity
This is the Vector Class.
Scalar X
This is the X value. (Usually represents a horizontal position or direction.)
Scalar Y
This is the Y value. (Usually represents a vertical position or direction.)
A Vector with 3 dimensions.
Scalar X
This is the X value.
static Vector3D Normalize(Vector3D source)
This returns the Normalized Vector3D that is passed. This is also known as a Unit Vector.
static readonly Vector3D Zero
Vector3D(0,0,0)
Scalar Y
This is the Y value.
Scalar Z
This is the Z value.