5using Microsoft.Xna.Framework.Design;
31 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
34 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
37 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
40 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
43 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
46 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
49 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
52 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
55 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
58 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
61 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
64 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
67 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
70 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
73 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
76 [SuppressMessage(
"Microsoft.Design",
"CA1051:DoNotDeclareVisibleInstanceFields")]
79 private static Matrix _identity =
new Matrix(1f, 0f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 0f, 1f);
209 [SuppressMessage(
"Microsoft.Design",
"CA1025")]
210 public Matrix(
float m11,
float m12,
float m13,
float m14,
float m21,
float m22,
float m23,
float m24,
float m31,
float m32,
float m33,
float m34,
float m41,
float m42,
float m43,
float m44)
233 value.X = objectPosition.X - cameraPosition.
X;
234 value.Y = objectPosition.Y - cameraPosition.
Y;
235 value.Z = objectPosition.Z - cameraPosition.
Z;
236 float num =
value.LengthSquared();
249 result3.M11 = result.X;
250 result3.M12 = result.Y;
251 result3.M13 = result.Z;
253 result3.M21 = result2.X;
254 result3.M22 = result2.Y;
255 result3.M23 = result2.Z;
257 result3.M31 =
value.X;
258 result3.M32 =
value.Y;
259 result3.M33 =
value.Z;
261 result3.M41 = objectPosition.
X;
262 result3.M42 = objectPosition.
Y;
263 result3.M43 = objectPosition.
Z;
271 value.X = objectPosition.X - cameraPosition.
X;
272 value.Y = objectPosition.Y - cameraPosition.Y;
273 value.Z = objectPosition.Z - cameraPosition.Z;
274 float num =
value.LengthSquared();
286 result.M11 = result2.X;
287 result.M12 = result2.Y;
288 result.M13 = result2.Z;
290 result.M21 = result3.X;
291 result.M22 = result3.Y;
292 result.M23 = result3.Z;
294 result.M31 =
value.X;
295 result.M32 =
value.Y;
296 result.M33 =
value.Z;
298 result.M41 = objectPosition.X;
299 result.M42 = objectPosition.Y;
300 result.M43 = objectPosition.Z;
307 value.X = objectPosition.X - cameraPosition.
X;
308 value.Y = objectPosition.Y - cameraPosition.
Y;
309 value.Z = objectPosition.Z - cameraPosition.
Z;
310 float num =
value.LengthSquared();
323 if (
Math.
Abs(result) > 0.99825466f)
325 if (objectForwardVector.HasValue)
327 result2 = objectForwardVector.Value;
328 Vector3.
Dot(ref rotateAxis, ref result2, out result);
329 if (
Math.
Abs(result) > 0.99825466f)
331 result = rotateAxis.X * Vector3.Forward.X + rotateAxis.Y * Vector3.Forward.Y + rotateAxis.Z *
Vector3.
Forward.Z;
337 result = rotateAxis.X * Vector3.Forward.X + rotateAxis.Y * Vector3.Forward.Y + rotateAxis.Z *
Vector3.
Forward.Z;
340 Vector3.
Cross(ref rotateAxis, ref result2, out result3);
342 Vector3.
Cross(ref result3, ref rotateAxis, out result2);
353 result4.M11 = result3.
X;
354 result4.M12 = result3.
Y;
355 result4.M13 = result3.
Z;
357 result4.M21 = vector.
X;
358 result4.M22 = vector.
Y;
359 result4.M23 = vector.
Z;
361 result4.M31 = result2.
X;
362 result4.M32 = result2.
Y;
363 result4.M33 = result2.
Z;
365 result4.M41 = objectPosition.
X;
366 result4.M42 = objectPosition.
Y;
367 result4.M43 = objectPosition.
Z;
375 value.X = objectPosition.X - cameraPosition.
X;
376 value.Y = objectPosition.Y - cameraPosition.Y;
377 value.Z = objectPosition.Z - cameraPosition.Z;
378 float num =
value.LengthSquared();
391 if (
Math.
Abs(result2) > 0.99825466f)
393 if (objectForwardVector.HasValue)
395 result3 = objectForwardVector.Value;
396 Vector3.
Dot(ref rotateAxis, ref result3, out result2);
397 if (
Math.
Abs(result2) > 0.99825466f)
399 result2 = rotateAxis.X * Vector3.Forward.X + rotateAxis.Y * Vector3.Forward.Y + rotateAxis.Z *
Vector3.
Forward.Z;
405 result2 = rotateAxis.X * Vector3.Forward.X + rotateAxis.Y * Vector3.Forward.Y + rotateAxis.Z *
Vector3.
Forward.Z;
408 Vector3.
Cross(ref rotateAxis, ref result3, out result4);
410 Vector3.
Cross(ref result4, ref rotateAxis, out result3);
420 result.M11 = result4.
X;
421 result.M12 = result4.
Y;
422 result.M13 = result4.
Z;
424 result.M21 = vector.
X;
425 result.M22 = vector.
Y;
426 result.M23 = vector.
Z;
428 result.M31 = result3.
X;
429 result.M32 = result3.
Y;
430 result.M33 = result3.
Z;
432 result.M41 = objectPosition.X;
433 result.M42 = objectPosition.Y;
434 result.M43 = objectPosition.Z;
453 result.M41 = position.
X;
454 result.M42 = position.
Y;
455 result.M43 = position.
Z;
474 result.M41 = position.X;
475 result.M42 = position.Y;
476 result.M43 = position.Z;
495 result.M41 = xPosition;
496 result.M42 = yPosition;
497 result.M43 = zPosition;
516 result.M41 = xPosition;
517 result.M42 = yPosition;
518 result.M43 = zPosition;
615 float num = (result.M11 = scale);
636 float num = (result.M11 = scale);
656 float num = (float)
Math.
Cos(radians);
657 float num2 = (float)
Math.
Sin(radians);
668 result.M32 = 0f - num2;
680 float num = (float)
Math.
Cos(radians);
681 float num2 = (float)
Math.
Sin(radians);
691 result.M32 = 0f - num2;
702 float num = (float)
Math.
Cos(radians);
703 float num2 = (float)
Math.
Sin(radians);
707 result.M13 = 0f - num2;
726 float num = (float)
Math.
Cos(radians);
727 float num2 = (float)
Math.
Sin(radians);
730 result.M13 = 0f - num2;
748 float num = (float)
Math.
Cos(radians);
749 float num2 = (float)
Math.
Sin(radians);
755 result.M21 = 0f - num2;
772 float num = (float)
Math.
Cos(radians);
773 float num2 = (float)
Math.
Sin(radians);
778 result.M21 = 0f - num2;
797 float num = (float)
Math.
Sin(angle);
798 float num2 = (float)
Math.
Cos(angle);
806 result.M11 = num3 + num2 * (1f - num3);
807 result.M12 = num6 - num2 * num6 + num * z;
808 result.M13 = num7 - num2 * num7 - num * y;
810 result.M21 = num6 - num2 * num6 - num * z;
811 result.M22 = num4 + num2 * (1f - num4);
812 result.M23 = num8 - num2 * num8 + num * x;
814 result.M31 = num7 - num2 * num7 + num * y;
815 result.M32 = num8 - num2 * num8 - num * x;
816 result.M33 = num5 + num2 * (1f - num5);
830 float num = (float)
Math.
Sin(angle);
831 float num2 = (float)
Math.
Cos(angle);
838 result.M11 = num3 + num2 * (1f - num3);
839 result.M12 = num6 - num2 * num6 + num * z;
840 result.M13 = num7 - num2 * num7 - num * y;
842 result.M21 = num6 - num2 * num6 - num * z;
843 result.M22 = num4 + num2 * (1f - num4);
844 result.M23 = num8 - num2 * num8 + num * x;
846 result.M31 = num7 - num2 * num7 + num * y;
847 result.M32 = num8 - num2 * num8 - num * x;
848 result.M33 = num5 + num2 * (1f - num5);
858 if (fieldOfView <= 0f || fieldOfView >= (
float)
Math.
PI)
862 if (nearPlaneDistance <= 0f)
866 if (farPlaneDistance <= 0f)
870 if (nearPlaneDistance >= farPlaneDistance)
874 float num = 1f / (float)
Math.
Tan(fieldOfView * 0.5f);
875 float m = num / aspectRatio;
878 result.M12 = (result.M13 = (result.M14 = 0f));
880 result.M21 = (result.M23 = (result.M24 = 0f));
881 result.M31 = (result.M32 = 0f);
882 result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
884 result.M41 = (result.M42 = (result.M44 = 0f));
885 result.M43 = nearPlaneDistance * farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
891 if (fieldOfView <= 0f || fieldOfView >= (
float)
Math.
PI)
895 if (nearPlaneDistance <= 0f)
899 if (farPlaneDistance <= 0f)
903 if (nearPlaneDistance >= farPlaneDistance)
907 float num = 1f / (float)
Math.
Tan(fieldOfView * 0.5f);
908 float m = num / aspectRatio;
910 result.M12 = (result.M13 = (result.M14 = 0f));
912 result.M21 = (result.M23 = (result.M24 = 0f));
913 result.M31 = (result.M32 = 0f);
914 result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
916 result.M41 = (result.M42 = (result.M44 = 0f));
917 result.M43 = nearPlaneDistance * farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
922 if (nearPlaneDistance <= 0f)
926 if (farPlaneDistance <= 0f)
930 if (nearPlaneDistance >= farPlaneDistance)
935 result.M11 = 2f * nearPlaneDistance / width;
936 result.M12 = (result.M13 = (result.M14 = 0f));
937 result.M22 = 2f * nearPlaneDistance / height;
938 result.M21 = (result.M23 = (result.M24 = 0f));
939 result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
940 result.M31 = (result.M32 = 0f);
942 result.M41 = (result.M42 = (result.M44 = 0f));
943 result.M43 = nearPlaneDistance * farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
947 public static void CreatePerspective(
float width,
float height,
float nearPlaneDistance,
float farPlaneDistance, out
Matrix result)
949 if (nearPlaneDistance <= 0f)
953 if (farPlaneDistance <= 0f)
957 if (nearPlaneDistance >= farPlaneDistance)
961 result.M11 = 2f * nearPlaneDistance / width;
962 result.M12 = (result.M13 = (result.M14 = 0f));
963 result.M22 = 2f * nearPlaneDistance / height;
964 result.M21 = (result.M23 = (result.M24 = 0f));
965 result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
966 result.M31 = (result.M32 = 0f);
968 result.M41 = (result.M42 = (result.M44 = 0f));
969 result.M43 = nearPlaneDistance * farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
974 if (nearPlaneDistance <= 0f)
978 if (farPlaneDistance <= 0f)
982 if (nearPlaneDistance >= farPlaneDistance)
987 result.M11 = 2f * nearPlaneDistance / (right - left);
988 result.M12 = (result.M13 = (result.M14 = 0f));
989 result.M22 = 2f * nearPlaneDistance / (top - bottom);
990 result.M21 = (result.M23 = (result.M24 = 0f));
991 result.M31 = (left + right) / (right - left);
992 result.M32 = (top + bottom) / (top - bottom);
993 result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
995 result.M43 = nearPlaneDistance * farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
996 result.M41 = (result.M42 = (result.M44 = 0f));
1002 if (nearPlaneDistance <= 0f)
1006 if (farPlaneDistance <= 0f)
1010 if (nearPlaneDistance >= farPlaneDistance)
1014 result.M11 = 2f * nearPlaneDistance / (right - left);
1015 result.M12 = (result.M13 = (result.M14 = 0f));
1016 result.M22 = 2f * nearPlaneDistance / (top - bottom);
1017 result.M21 = (result.M23 = (result.M24 = 0f));
1018 result.M31 = (left + right) / (right - left);
1019 result.M32 = (top + bottom) / (top - bottom);
1020 result.M33 = farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
1022 result.M43 = nearPlaneDistance * farPlaneDistance / (nearPlaneDistance - farPlaneDistance);
1023 result.M41 = (result.M42 = (result.M44 = 0f));
1029 result.M11 = 2f / width;
1030 result.M12 = (result.M13 = (result.M14 = 0f));
1031 result.M22 = 2f / height;
1032 result.M21 = (result.M23 = (result.M24 = 0f));
1033 result.M33 = 1f / (zNearPlane - zFarPlane);
1034 result.M31 = (result.M32 = (result.M34 = 0f));
1035 result.M41 = (result.M42 = 0f);
1036 result.M43 = zNearPlane / (zNearPlane - zFarPlane);
1043 result.M11 = 2f / width;
1044 result.M12 = (result.M13 = (result.M14 = 0f));
1045 result.M22 = 2f / height;
1046 result.M21 = (result.M23 = (result.M24 = 0f));
1047 result.M33 = 1f / (zNearPlane - zFarPlane);
1048 result.M31 = (result.M32 = (result.M34 = 0f));
1049 result.M41 = (result.M42 = 0f);
1050 result.M43 = zNearPlane / (zNearPlane - zFarPlane);
1057 result.M11 = 2f / (right - left);
1058 result.M12 = (result.M13 = (result.M14 = 0f));
1059 result.M22 = 2f / (top - bottom);
1060 result.M21 = (result.M23 = (result.M24 = 0f));
1061 result.M33 = 1f / (zNearPlane - zFarPlane);
1062 result.M31 = (result.M32 = (result.M34 = 0f));
1063 result.M41 = (left + right) / (left - right);
1064 result.M42 = (top + bottom) / (bottom - top);
1065 result.M43 = zNearPlane / (zNearPlane - zFarPlane);
1072 result.M11 = 2f / (right - left);
1073 result.M12 = (result.M13 = (result.M14 = 0f));
1074 result.M22 = 2f / (top - bottom);
1075 result.M21 = (result.M23 = (result.M24 = 0f));
1076 result.M33 = 1f / (zNearPlane - zFarPlane);
1077 result.M31 = (result.M32 = (result.M34 = 0f));
1078 result.M41 = (left + right) / (left - right);
1079 result.M42 = (top + bottom) / (bottom - top);
1080 result.M43 = zNearPlane / (zNearPlane - zFarPlane);
1090 result.M11 = vector2.
X;
1091 result.M12 = vector3.
X;
1092 result.M13 = vector.
X;
1094 result.M21 = vector2.
Y;
1095 result.M22 = vector3.
Y;
1096 result.M23 = vector.
Y;
1098 result.M31 = vector2.
Z;
1099 result.M32 = vector3.
Z;
1100 result.M33 = vector.
Z;
1102 result.M41 = 0f -
Vector3.
Dot(vector2, cameraPosition);
1103 result.M42 = 0f -
Vector3.
Dot(vector3, cameraPosition);
1104 result.M43 = 0f -
Vector3.
Dot(vector, cameraPosition);
1114 result.M11 = vector2.
X;
1115 result.M12 = vector3.
X;
1116 result.M13 = vector.
X;
1118 result.M21 = vector2.
Y;
1119 result.M22 = vector3.
Y;
1120 result.M23 = vector.
Y;
1122 result.M31 = vector2.
Z;
1123 result.M32 = vector3.
Z;
1124 result.M33 = vector.
Z;
1126 result.M41 = 0f -
Vector3.
Dot(vector2, cameraPosition);
1127 result.M42 = 0f -
Vector3.
Dot(vector3, cameraPosition);
1128 result.M43 = 0f -
Vector3.
Dot(vector, cameraPosition);
1138 result.M11 = vector2.
X;
1139 result.M12 = vector2.
Y;
1140 result.M13 = vector2.
Z;
1142 result.M21 = vector3.
X;
1143 result.M22 = vector3.
Y;
1144 result.M23 = vector3.
Z;
1146 result.M31 = vector.
X;
1147 result.M32 = vector.
Y;
1148 result.M33 = vector.
Z;
1150 result.M41 = position.
X;
1151 result.M42 = position.
Y;
1152 result.M43 = position.
Z;
1162 result.M11 = vector2.
X;
1163 result.M12 = vector2.
Y;
1164 result.M13 = vector2.
Z;
1166 result.M21 = vector3.
X;
1167 result.M22 = vector3.
Y;
1168 result.M23 = vector3.
Z;
1170 result.M31 = vector.
X;
1171 result.M32 = vector.
Y;
1172 result.M33 = vector.
Z;
1174 result.M41 = position.X;
1175 result.M42 = position.Y;
1176 result.M43 = position.Z;
1182 float num = quaternion.X * quaternion.
X;
1183 float num2 = quaternion.Y * quaternion.
Y;
1184 float num3 = quaternion.Z * quaternion.
Z;
1185 float num4 = quaternion.X * quaternion.
Y;
1186 float num5 = quaternion.Z * quaternion.
W;
1187 float num6 = quaternion.Z * quaternion.
X;
1188 float num7 = quaternion.Y * quaternion.
W;
1189 float num8 = quaternion.Y * quaternion.
Z;
1190 float num9 = quaternion.X * quaternion.
W;
1192 result.M11 = 1f - 2f * (num2 + num3);
1193 result.M12 = 2f * (num4 + num5);
1194 result.M13 = 2f * (num6 - num7);
1196 result.M21 = 2f * (num4 - num5);
1197 result.M22 = 1f - 2f * (num3 + num);
1198 result.M23 = 2f * (num8 + num9);
1200 result.M31 = 2f * (num6 + num7);
1201 result.M32 = 2f * (num8 - num9);
1202 result.M33 = 1f - 2f * (num2 + num);
1213 float num = quaternion.X * quaternion.X;
1214 float num2 = quaternion.Y * quaternion.Y;
1215 float num3 = quaternion.Z * quaternion.Z;
1216 float num4 = quaternion.X * quaternion.Y;
1217 float num5 = quaternion.Z * quaternion.W;
1218 float num6 = quaternion.Z * quaternion.X;
1219 float num7 = quaternion.Y * quaternion.W;
1220 float num8 = quaternion.Y * quaternion.Z;
1221 float num9 = quaternion.X * quaternion.W;
1222 result.M11 = 1f - 2f * (num2 + num3);
1223 result.M12 = 2f * (num4 + num5);
1224 result.M13 = 2f * (num6 - num7);
1226 result.M21 = 2f * (num4 - num5);
1227 result.M22 = 1f - 2f * (num3 + num);
1228 result.M23 = 2f * (num8 + num9);
1230 result.M31 = 2f * (num6 + num7);
1231 result.M32 = 2f * (num8 - num9);
1232 result.M33 = 1f - 2f * (num2 + num);
1256 float num = result.Normal.X * lightDirection.X + result.Normal.Y * lightDirection.Y + result.Normal.Z * lightDirection.
Z;
1257 float num2 = 0f - result.Normal.X;
1258 float num3 = 0f - result.Normal.Y;
1259 float num4 = 0f - result.Normal.Z;
1260 float num5 = 0f - result.D;
1262 result2.M11 = num2 * lightDirection.X + num;
1263 result2.M21 = num3 * lightDirection.
X;
1264 result2.M31 = num4 * lightDirection.
X;
1265 result2.M41 = num5 * lightDirection.
X;
1266 result2.M12 = num2 * lightDirection.
Y;
1267 result2.M22 = num3 * lightDirection.Y + num;
1268 result2.M32 = num4 * lightDirection.
Y;
1269 result2.M42 = num5 * lightDirection.
Y;
1270 result2.M13 = num2 * lightDirection.
Z;
1271 result2.M23 = num3 * lightDirection.
Z;
1272 result2.M33 = num4 * lightDirection.Z + num;
1273 result2.M43 = num5 * lightDirection.
Z;
1284 float num = result2.Normal.X * lightDirection.X + result2.Normal.Y * lightDirection.Y + result2.Normal.Z * lightDirection.Z;
1285 float num2 = 0f - result2.Normal.X;
1286 float num3 = 0f - result2.Normal.Y;
1287 float num4 = 0f - result2.Normal.Z;
1288 float num5 = 0f - result2.D;
1289 result.M11 = num2 * lightDirection.X + num;
1290 result.M21 = num3 * lightDirection.X;
1291 result.M31 = num4 * lightDirection.X;
1292 result.M41 = num5 * lightDirection.X;
1293 result.M12 = num2 * lightDirection.Y;
1294 result.M22 = num3 * lightDirection.Y + num;
1295 result.M32 = num4 * lightDirection.Y;
1296 result.M42 = num5 * lightDirection.Y;
1297 result.M13 = num2 * lightDirection.Z;
1298 result.M23 = num3 * lightDirection.Z;
1299 result.M33 = num4 * lightDirection.Z + num;
1300 result.M43 = num5 * lightDirection.Z;
1310 float x =
value.Normal.X;
1311 float y =
value.Normal.Y;
1312 float z =
value.Normal.Z;
1313 float num = -2f * x;
1314 float num2 = -2f * y;
1315 float num3 = -2f * z;
1317 result.M11 = num * x + 1f;
1318 result.M12 = num2 * x;
1319 result.M13 = num3 * x;
1321 result.M21 = num * y;
1322 result.M22 = num2 * y + 1f;
1323 result.M23 = num3 * y;
1325 result.M31 = num * z;
1326 result.M32 = num2 * z;
1327 result.M33 = num3 * z + 1f;
1329 result.M41 = num *
value.D;
1330 result.M42 = num2 *
value.D;
1331 result.M43 = num3 *
value.D;
1340 float x = result2.Normal.X;
1341 float y = result2.Normal.Y;
1342 float z = result2.Normal.Z;
1343 float num = -2f * x;
1344 float num2 = -2f * y;
1345 float num3 = -2f * z;
1346 result.M11 = num * x + 1f;
1347 result.M12 = num2 * x;
1348 result.M13 = num3 * x;
1350 result.M21 = num * y;
1351 result.M22 = num2 * y + 1f;
1352 result.M23 = num3 * y;
1354 result.M31 = num * z;
1355 result.M32 = num2 * z;
1356 result.M33 = num3 * z + 1f;
1358 result.M41 = num * result2.D;
1359 result.M42 = num2 * result2.D;
1360 result.M43 = num3 * result2.D;
1367 fixed (
float* ptr3 = &scale.X)
1374 canonicalBasis.Row0 =
new Vector3(1f, 0f, 0f);
1375 canonicalBasis.Row1 =
new Vector3(0f, 1f, 0f);
1376 canonicalBasis.Row2 =
new Vector3(0f, 0f, 1f);
1377 translation.X =
M41;
1378 translation.Y =
M42;
1379 translation.Z =
M43;
1386 scale.X = (*ptr)->Length();
1387 scale.Y = ptr[1]->
Length();
1388 scale.Z = ptr[2]->
Length();
1390 float num2 = ptr3[1];
1391 float num3 = ptr3[2];
1418 else if (num < num3)
1438 if (ptr3[num4] < 0.0001f)
1440 *ptr[num4] = ptr2[num4];
1443 if (ptr3[num5] < 0.0001f)
1445 float num7 =
Math.
Abs(ptr[num4]->
X);
1446 float num8 =
Math.
Abs(ptr[num4]->
Y);
1447 float num9 =
Math.
Abs(ptr[num4]->
Z);
1448 uint num10 = ((num7 < num8) ? ((!(num8 < num9)) ? ((!(num7 < num9)) ? 2u : 0u) : 0u) : ((num7 < num9) ? 1u : ((num8 < num9) ? 1u : 2u)));
1449 Vector3.
Cross(ref *ptr[num5], ref *ptr[num4], out ptr2[num10]);
1452 if (ptr3[num6] < 0.0001f)
1454 Vector3.
Cross(ref *ptr[num6], ref *ptr[num4], out *ptr[num5]);
1460 ptr3[num4] = 0f - ptr3[num4];
1461 *ptr[num4] = -(*ptr[num4]);
1466 if (0.0001f < num11)
1481 float num = rotation.X + rotation.
X;
1482 float num2 = rotation.Y + rotation.
Y;
1483 float num3 = rotation.Z + rotation.
Z;
1484 float num4 = rotation.W * num;
1485 float num5 = rotation.W * num2;
1486 float num6 = rotation.W * num3;
1487 float num7 = rotation.X * num;
1488 float num8 = rotation.X * num2;
1489 float num9 = rotation.X * num3;
1490 float num10 = rotation.Y * num2;
1491 float num11 = rotation.Y * num3;
1492 float num12 = rotation.Z * num3;
1493 float num13 = 1f - num10 - num12;
1494 float num14 = num8 - num6;
1495 float num15 = num9 + num5;
1496 float num16 = num8 + num6;
1497 float num17 = 1f - num7 - num12;
1498 float num18 = num11 - num4;
1499 float num19 = num9 - num5;
1500 float num20 = num11 + num4;
1501 float num21 = 1f - num7 - num10;
1503 result.M11 = value.M11 * num13 + value.M12 * num14 + value.M13 * num15;
1504 result.M12 = value.M11 * num16 + value.M12 * num17 + value.M13 * num18;
1505 result.M13 = value.M11 * num19 + value.M12 * num20 + value.M13 * num21;
1506 result.M14 =
value.M14;
1507 result.M21 = value.M21 * num13 + value.M22 * num14 + value.M23 * num15;
1508 result.M22 = value.M21 * num16 + value.M22 * num17 + value.M23 * num18;
1509 result.M23 = value.M21 * num19 + value.M22 * num20 + value.M23 * num21;
1510 result.M24 =
value.M24;
1511 result.M31 = value.M31 * num13 + value.M32 * num14 + value.M33 * num15;
1512 result.M32 = value.M31 * num16 + value.M32 * num17 + value.M33 * num18;
1513 result.M33 = value.M31 * num19 + value.M32 * num20 + value.M33 * num21;
1514 result.M34 =
value.M34;
1515 result.M41 = value.M41 * num13 + value.M42 * num14 + value.M43 * num15;
1516 result.M42 = value.M41 * num16 + value.M42 * num17 + value.M43 * num18;
1517 result.M43 = value.M41 * num19 + value.M42 * num20 + value.M43 * num21;
1518 result.M44 =
value.M44;
1524 float num = rotation.X + rotation.X;
1525 float num2 = rotation.Y + rotation.Y;
1526 float num3 = rotation.Z + rotation.Z;
1527 float num4 = rotation.W * num;
1528 float num5 = rotation.W * num2;
1529 float num6 = rotation.W * num3;
1530 float num7 = rotation.X * num;
1531 float num8 = rotation.X * num2;
1532 float num9 = rotation.X * num3;
1533 float num10 = rotation.Y * num2;
1534 float num11 = rotation.Y * num3;
1535 float num12 = rotation.Z * num3;
1536 float num13 = 1f - num10 - num12;
1537 float num14 = num8 - num6;
1538 float num15 = num9 + num5;
1539 float num16 = num8 + num6;
1540 float num17 = 1f - num7 - num12;
1541 float num18 = num11 - num4;
1542 float num19 = num9 - num5;
1543 float num20 = num11 + num4;
1544 float num21 = 1f - num7 - num10;
1545 float m = value.M11 * num13 + value.M12 * num14 + value.M13 * num15;
1546 float m2 = value.M11 * num16 + value.M12 * num17 + value.M13 * num18;
1547 float m3 = value.M11 * num19 + value.M12 * num20 + value.M13 * num21;
1548 float m4 =
value.M14;
1549 float m5 = value.M21 * num13 + value.M22 * num14 + value.M23 * num15;
1550 float m6 = value.M21 * num16 + value.M22 * num17 + value.M23 * num18;
1551 float m7 = value.M21 * num19 + value.M22 * num20 + value.M23 * num21;
1552 float m8 =
value.M24;
1553 float m9 = value.M31 * num13 + value.M32 * num14 + value.M33 * num15;
1554 float m10 = value.M31 * num16 + value.M32 * num17 + value.M33 * num18;
1555 float m11 = value.M31 * num19 + value.M32 * num20 + value.M33 * num21;
1556 float m12 =
value.M34;
1557 float m13 = value.M41 * num13 + value.M42 * num14 + value.M43 * num15;
1558 float m14 = value.M41 * num16 + value.M42 * num17 + value.M43 * num18;
1559 float m15 = value.M41 * num19 + value.M42 * num20 + value.M43 * num21;
1560 float m16 =
value.M44;
1582 return "{ " +
string.Format(currentCulture,
"{{M11:{0} M12:{1} M13:{2} M14:{3}}} ",
M11.ToString(currentCulture),
M12.ToString(currentCulture),
M13.ToString(currentCulture),
M14.ToString(currentCulture)) +
string.Format(currentCulture,
"{{M21:{0} M22:{1} M23:{2} M24:{3}}} ",
M21.ToString(currentCulture),
M22.ToString(currentCulture),
M23.ToString(currentCulture),
M24.ToString(currentCulture)) +
string.Format(currentCulture,
"{{M31:{0} M32:{1} M33:{2} M34:{3}}} ",
M31.ToString(currentCulture),
M32.ToString(currentCulture),
M33.ToString(currentCulture),
M34.ToString(currentCulture)) +
string.Format(currentCulture,
"{{M41:{0} M42:{1} M43:{2} M44:{3}}} ",
M41.ToString(currentCulture),
M42.ToString(currentCulture),
M43.ToString(currentCulture),
M44.ToString(currentCulture)) +
"}";
1596 bool result =
false;
1606 return M11.GetHashCode() +
M12.GetHashCode() +
M13.GetHashCode() +
M14.GetHashCode() +
M21.GetHashCode() +
M22.GetHashCode() +
M23.GetHashCode() +
M24.GetHashCode() +
M31.GetHashCode() +
M32.GetHashCode() +
M33.GetHashCode() +
M34.GetHashCode() +
M41.GetHashCode() +
M42.GetHashCode() +
M43.GetHashCode() +
M44.GetHashCode();
1612 result.M11 = matrix.
M11;
1613 result.M12 = matrix.
M21;
1614 result.M13 = matrix.
M31;
1615 result.M14 = matrix.
M41;
1616 result.M21 = matrix.
M12;
1617 result.M22 = matrix.
M22;
1618 result.M23 = matrix.
M32;
1619 result.M24 = matrix.
M42;
1620 result.M31 = matrix.
M13;
1621 result.M32 = matrix.
M23;
1622 result.M33 = matrix.
M33;
1623 result.M34 = matrix.
M43;
1624 result.M41 = matrix.
M14;
1625 result.M42 = matrix.
M24;
1626 result.M43 = matrix.
M34;
1627 result.M44 = matrix.
M44;
1633 float m = matrix.M11;
1634 float m2 = matrix.M12;
1635 float m3 = matrix.M13;
1636 float m4 = matrix.M14;
1637 float m5 = matrix.M21;
1638 float m6 = matrix.M22;
1639 float m7 = matrix.M23;
1640 float m8 = matrix.M24;
1641 float m9 = matrix.M31;
1642 float m10 = matrix.M32;
1643 float m11 = matrix.M33;
1644 float m12 = matrix.M34;
1645 float m13 = matrix.M41;
1646 float m14 = matrix.M42;
1647 float m15 = matrix.M43;
1648 float m16 = matrix.M44;
1685 float num = m11 * m16 - m12 * m15;
1686 float num2 = m10 * m16 - m12 * m14;
1687 float num3 = m10 * m15 - m11 * m14;
1688 float num4 = m9 * m16 - m12 * m13;
1689 float num5 = m9 * m15 - m11 * m13;
1690 float num6 = m9 * m14 - m10 * m13;
1691 return m * (m6 * num - m7 * num2 + m8 * num3) - m2 * (m5 * num - m7 * num4 + m8 * num5) + m3 * (m5 * num2 - m6 * num4 + m8 * num6) - m4 * (m5 * num3 - m6 * num5 + m7 * num6);
1696 float m = matrix.
M11;
1697 float m2 = matrix.
M12;
1698 float m3 = matrix.
M13;
1699 float m4 = matrix.
M14;
1700 float m5 = matrix.
M21;
1701 float m6 = matrix.
M22;
1702 float m7 = matrix.
M23;
1703 float m8 = matrix.
M24;
1704 float m9 = matrix.
M31;
1705 float m10 = matrix.
M32;
1706 float m11 = matrix.
M33;
1707 float m12 = matrix.
M34;
1708 float m13 = matrix.
M41;
1709 float m14 = matrix.
M42;
1710 float m15 = matrix.
M43;
1711 float m16 = matrix.
M44;
1712 float num = m11 * m16 - m12 * m15;
1713 float num2 = m10 * m16 - m12 * m14;
1714 float num3 = m10 * m15 - m11 * m14;
1715 float num4 = m9 * m16 - m12 * m13;
1716 float num5 = m9 * m15 - m11 * m13;
1717 float num6 = m9 * m14 - m10 * m13;
1718 float num7 = m6 * num - m7 * num2 + m8 * num3;
1719 float num8 = 0f - (m5 * num - m7 * num4 + m8 * num5);
1720 float num9 = m5 * num2 - m6 * num4 + m8 * num6;
1721 float num10 = 0f - (m5 * num3 - m6 * num5 + m7 * num6);
1722 float num11 = 1f / (m * num7 + m2 * num8 + m3 * num9 + m4 * num10);
1724 result.M11 = num7 * num11;
1725 result.M21 = num8 * num11;
1726 result.M31 = num9 * num11;
1727 result.M41 = num10 * num11;
1728 result.M12 = (0f - (m2 * num - m3 * num2 + m4 * num3)) * num11;
1729 result.M22 = (m * num - m3 * num4 + m4 * num5) * num11;
1730 result.M32 = (0f - (m * num2 - m2 * num4 + m4 * num6)) * num11;
1731 result.M42 = (m * num3 - m2 * num5 + m3 * num6) * num11;
1732 float num12 = m7 * m16 - m8 * m15;
1733 float num13 = m6 * m16 - m8 * m14;
1734 float num14 = m6 * m15 - m7 * m14;
1735 float num15 = m5 * m16 - m8 * m13;
1736 float num16 = m5 * m15 - m7 * m13;
1737 float num17 = m5 * m14 - m6 * m13;
1738 result.M13 = (m2 * num12 - m3 * num13 + m4 * num14) * num11;
1739 result.M23 = (0f - (m * num12 - m3 * num15 + m4 * num16)) * num11;
1740 result.M33 = (m * num13 - m2 * num15 + m4 * num17) * num11;
1741 result.M43 = (0f - (m * num14 - m2 * num16 + m3 * num17)) * num11;
1742 float num18 = m7 * m12 - m8 * m11;
1743 float num19 = m6 * m12 - m8 * m10;
1744 float num20 = m6 * m11 - m7 * m10;
1745 float num21 = m5 * m12 - m8 * m9;
1746 float num22 = m5 * m11 - m7 * m9;
1747 float num23 = m5 * m10 - m6 * m9;
1748 result.M14 = (0f - (m2 * num18 - m3 * num19 + m4 * num20)) * num11;
1749 result.M24 = (m * num18 - m3 * num21 + m4 * num22) * num11;
1750 result.M34 = (0f - (m * num19 - m2 * num21 + m4 * num23)) * num11;
1751 result.M44 = (m * num20 - m2 * num22 + m3 * num23) * num11;
1757 float m = matrix.M11;
1758 float m2 = matrix.M12;
1759 float m3 = matrix.M13;
1760 float m4 = matrix.M14;
1761 float m5 = matrix.M21;
1762 float m6 = matrix.M22;
1763 float m7 = matrix.M23;
1764 float m8 = matrix.M24;
1765 float m9 = matrix.M31;
1766 float m10 = matrix.M32;
1767 float m11 = matrix.M33;
1768 float m12 = matrix.M34;
1769 float m13 = matrix.M41;
1770 float m14 = matrix.M42;
1771 float m15 = matrix.M43;
1772 float m16 = matrix.M44;
1773 float num = m11 * m16 - m12 * m15;
1774 float num2 = m10 * m16 - m12 * m14;
1775 float num3 = m10 * m15 - m11 * m14;
1776 float num4 = m9 * m16 - m12 * m13;
1777 float num5 = m9 * m15 - m11 * m13;
1778 float num6 = m9 * m14 - m10 * m13;
1779 float num7 = m6 * num - m7 * num2 + m8 * num3;
1780 float num8 = 0f - (m5 * num - m7 * num4 + m8 * num5);
1781 float num9 = m5 * num2 - m6 * num4 + m8 * num6;
1782 float num10 = 0f - (m5 * num3 - m6 * num5 + m7 * num6);
1783 float num11 = 1f / (m * num7 + m2 * num8 + m3 * num9 + m4 * num10);
1784 result.M11 = num7 * num11;
1785 result.M21 = num8 * num11;
1786 result.M31 = num9 * num11;
1787 result.M41 = num10 * num11;
1788 result.M12 = (0f - (m2 * num - m3 * num2 + m4 * num3)) * num11;
1789 result.M22 = (m * num - m3 * num4 + m4 * num5) * num11;
1790 result.M32 = (0f - (m * num2 - m2 * num4 + m4 * num6)) * num11;
1791 result.M42 = (m * num3 - m2 * num5 + m3 * num6) * num11;
1792 float num12 = m7 * m16 - m8 * m15;
1793 float num13 = m6 * m16 - m8 * m14;
1794 float num14 = m6 * m15 - m7 * m14;
1795 float num15 = m5 * m16 - m8 * m13;
1796 float num16 = m5 * m15 - m7 * m13;
1797 float num17 = m5 * m14 - m6 * m13;
1798 result.M13 = (m2 * num12 - m3 * num13 + m4 * num14) * num11;
1799 result.M23 = (0f - (m * num12 - m3 * num15 + m4 * num16)) * num11;
1800 result.M33 = (m * num13 - m2 * num15 + m4 * num17) * num11;
1801 result.M43 = (0f - (m * num14 - m2 * num16 + m3 * num17)) * num11;
1802 float num18 = m7 * m12 - m8 * m11;
1803 float num19 = m6 * m12 - m8 * m10;
1804 float num20 = m6 * m11 - m7 * m10;
1805 float num21 = m5 * m12 - m8 * m9;
1806 float num22 = m5 * m11 - m7 * m9;
1807 float num23 = m5 * m10 - m6 * m9;
1808 result.M14 = (0f - (m2 * num18 - m3 * num19 + m4 * num20)) * num11;
1809 result.M24 = (m * num18 - m3 * num21 + m4 * num22) * num11;
1810 result.M34 = (0f - (m * num19 - m2 * num21 + m4 * num23)) * num11;
1811 result.M44 = (m * num20 - m2 * num22 + m3 * num23) * num11;
1817 result.M11 = matrix1.M11 + (matrix2.M11 - matrix1.
M11) * amount;
1818 result.M12 = matrix1.M12 + (matrix2.M12 - matrix1.
M12) * amount;
1819 result.M13 = matrix1.M13 + (matrix2.M13 - matrix1.
M13) * amount;
1820 result.M14 = matrix1.M14 + (matrix2.M14 - matrix1.
M14) * amount;
1821 result.M21 = matrix1.M21 + (matrix2.M21 - matrix1.
M21) * amount;
1822 result.M22 = matrix1.M22 + (matrix2.M22 - matrix1.
M22) * amount;
1823 result.M23 = matrix1.M23 + (matrix2.M23 - matrix1.
M23) * amount;
1824 result.M24 = matrix1.M24 + (matrix2.M24 - matrix1.
M24) * amount;
1825 result.M31 = matrix1.M31 + (matrix2.M31 - matrix1.
M31) * amount;
1826 result.M32 = matrix1.M32 + (matrix2.M32 - matrix1.
M32) * amount;
1827 result.M33 = matrix1.M33 + (matrix2.M33 - matrix1.
M33) * amount;
1828 result.M34 = matrix1.M34 + (matrix2.M34 - matrix1.
M34) * amount;
1829 result.M41 = matrix1.M41 + (matrix2.M41 - matrix1.
M41) * amount;
1830 result.M42 = matrix1.M42 + (matrix2.M42 - matrix1.
M42) * amount;
1831 result.M43 = matrix1.M43 + (matrix2.M43 - matrix1.
M43) * amount;
1832 result.M44 = matrix1.M44 + (matrix2.M44 - matrix1.
M44) * amount;
1838 result.M11 = matrix1.M11 + (matrix2.M11 - matrix1.M11) * amount;
1839 result.M12 = matrix1.M12 + (matrix2.M12 - matrix1.M12) * amount;
1840 result.M13 = matrix1.M13 + (matrix2.M13 - matrix1.M13) * amount;
1841 result.M14 = matrix1.M14 + (matrix2.M14 - matrix1.M14) * amount;
1842 result.M21 = matrix1.M21 + (matrix2.M21 - matrix1.M21) * amount;
1843 result.M22 = matrix1.M22 + (matrix2.M22 - matrix1.M22) * amount;
1844 result.M23 = matrix1.M23 + (matrix2.M23 - matrix1.M23) * amount;
1845 result.M24 = matrix1.M24 + (matrix2.M24 - matrix1.M24) * amount;
1846 result.M31 = matrix1.M31 + (matrix2.M31 - matrix1.M31) * amount;
1847 result.M32 = matrix1.M32 + (matrix2.M32 - matrix1.M32) * amount;
1848 result.M33 = matrix1.M33 + (matrix2.M33 - matrix1.M33) * amount;
1849 result.M34 = matrix1.M34 + (matrix2.M34 - matrix1.M34) * amount;
1850 result.M41 = matrix1.M41 + (matrix2.M41 - matrix1.M41) * amount;
1851 result.M42 = matrix1.M42 + (matrix2.M42 - matrix1.M42) * amount;
1852 result.M43 = matrix1.M43 + (matrix2.M43 - matrix1.M43) * amount;
1853 result.M44 = matrix1.M44 + (matrix2.M44 - matrix1.M44) * amount;
1859 result.M11 = 0f - matrix.
M11;
1860 result.M12 = 0f - matrix.
M12;
1861 result.M13 = 0f - matrix.
M13;
1862 result.M14 = 0f - matrix.
M14;
1863 result.M21 = 0f - matrix.
M21;
1864 result.M22 = 0f - matrix.
M22;
1865 result.M23 = 0f - matrix.
M23;
1866 result.M24 = 0f - matrix.
M24;
1867 result.M31 = 0f - matrix.
M31;
1868 result.M32 = 0f - matrix.
M32;
1869 result.M33 = 0f - matrix.
M33;
1870 result.M34 = 0f - matrix.
M34;
1871 result.M41 = 0f - matrix.
M41;
1872 result.M42 = 0f - matrix.
M42;
1873 result.M43 = 0f - matrix.
M43;
1874 result.M44 = 0f - matrix.
M44;
1880 result.M11 = 0f - matrix.M11;
1881 result.M12 = 0f - matrix.M12;
1882 result.M13 = 0f - matrix.M13;
1883 result.M14 = 0f - matrix.M14;
1884 result.M21 = 0f - matrix.M21;
1885 result.M22 = 0f - matrix.M22;
1886 result.M23 = 0f - matrix.M23;
1887 result.M24 = 0f - matrix.M24;
1888 result.M31 = 0f - matrix.M31;
1889 result.M32 = 0f - matrix.M32;
1890 result.M33 = 0f - matrix.M33;
1891 result.M34 = 0f - matrix.M34;
1892 result.M41 = 0f - matrix.M41;
1893 result.M42 = 0f - matrix.M42;
1894 result.M43 = 0f - matrix.M43;
1895 result.M44 = 0f - matrix.M44;
1901 result.M11 = matrix1.M11 + matrix2.
M11;
1902 result.M12 = matrix1.M12 + matrix2.
M12;
1903 result.M13 = matrix1.M13 + matrix2.
M13;
1904 result.M14 = matrix1.M14 + matrix2.
M14;
1905 result.M21 = matrix1.M21 + matrix2.
M21;
1906 result.M22 = matrix1.M22 + matrix2.
M22;
1907 result.M23 = matrix1.M23 + matrix2.
M23;
1908 result.M24 = matrix1.M24 + matrix2.
M24;
1909 result.M31 = matrix1.M31 + matrix2.
M31;
1910 result.M32 = matrix1.M32 + matrix2.
M32;
1911 result.M33 = matrix1.M33 + matrix2.
M33;
1912 result.M34 = matrix1.M34 + matrix2.
M34;
1913 result.M41 = matrix1.M41 + matrix2.
M41;
1914 result.M42 = matrix1.M42 + matrix2.
M42;
1915 result.M43 = matrix1.M43 + matrix2.
M43;
1916 result.M44 = matrix1.M44 + matrix2.
M44;
1922 result.M11 = matrix1.M11 + matrix2.M11;
1923 result.M12 = matrix1.M12 + matrix2.M12;
1924 result.M13 = matrix1.M13 + matrix2.M13;
1925 result.M14 = matrix1.M14 + matrix2.M14;
1926 result.M21 = matrix1.M21 + matrix2.M21;
1927 result.M22 = matrix1.M22 + matrix2.M22;
1928 result.M23 = matrix1.M23 + matrix2.M23;
1929 result.M24 = matrix1.M24 + matrix2.M24;
1930 result.M31 = matrix1.M31 + matrix2.M31;
1931 result.M32 = matrix1.M32 + matrix2.M32;
1932 result.M33 = matrix1.M33 + matrix2.M33;
1933 result.M34 = matrix1.M34 + matrix2.M34;
1934 result.M41 = matrix1.M41 + matrix2.M41;
1935 result.M42 = matrix1.M42 + matrix2.M42;
1936 result.M43 = matrix1.M43 + matrix2.M43;
1937 result.M44 = matrix1.M44 + matrix2.M44;
1943 result.M11 = matrix1.M11 - matrix2.
M11;
1944 result.M12 = matrix1.M12 - matrix2.
M12;
1945 result.M13 = matrix1.M13 - matrix2.
M13;
1946 result.M14 = matrix1.M14 - matrix2.
M14;
1947 result.M21 = matrix1.M21 - matrix2.
M21;
1948 result.M22 = matrix1.M22 - matrix2.
M22;
1949 result.M23 = matrix1.M23 - matrix2.
M23;
1950 result.M24 = matrix1.M24 - matrix2.
M24;
1951 result.M31 = matrix1.M31 - matrix2.
M31;
1952 result.M32 = matrix1.M32 - matrix2.
M32;
1953 result.M33 = matrix1.M33 - matrix2.
M33;
1954 result.M34 = matrix1.M34 - matrix2.
M34;
1955 result.M41 = matrix1.M41 - matrix2.
M41;
1956 result.M42 = matrix1.M42 - matrix2.
M42;
1957 result.M43 = matrix1.M43 - matrix2.
M43;
1958 result.M44 = matrix1.M44 - matrix2.
M44;
1964 result.M11 = matrix1.M11 - matrix2.M11;
1965 result.M12 = matrix1.M12 - matrix2.M12;
1966 result.M13 = matrix1.M13 - matrix2.M13;
1967 result.M14 = matrix1.M14 - matrix2.M14;
1968 result.M21 = matrix1.M21 - matrix2.M21;
1969 result.M22 = matrix1.M22 - matrix2.M22;
1970 result.M23 = matrix1.M23 - matrix2.M23;
1971 result.M24 = matrix1.M24 - matrix2.M24;
1972 result.M31 = matrix1.M31 - matrix2.M31;
1973 result.M32 = matrix1.M32 - matrix2.M32;
1974 result.M33 = matrix1.M33 - matrix2.M33;
1975 result.M34 = matrix1.M34 - matrix2.M34;
1976 result.M41 = matrix1.M41 - matrix2.M41;
1977 result.M42 = matrix1.M42 - matrix2.M42;
1978 result.M43 = matrix1.M43 - matrix2.M43;
1979 result.M44 = matrix1.M44 - matrix2.M44;
1985 result.M11 = matrix1.M11 * matrix2.M11 + matrix1.M12 * matrix2.M21 + matrix1.M13 * matrix2.M31 + matrix1.M14 * matrix2.
M41;
1986 result.M12 = matrix1.M11 * matrix2.M12 + matrix1.M12 * matrix2.M22 + matrix1.M13 * matrix2.M32 + matrix1.M14 * matrix2.
M42;
1987 result.M13 = matrix1.M11 * matrix2.M13 + matrix1.M12 * matrix2.M23 + matrix1.M13 * matrix2.M33 + matrix1.M14 * matrix2.
M43;
1988 result.M14 = matrix1.M11 * matrix2.M14 + matrix1.M12 * matrix2.M24 + matrix1.M13 * matrix2.M34 + matrix1.M14 * matrix2.
M44;
1989 result.M21 = matrix1.M21 * matrix2.M11 + matrix1.M22 * matrix2.M21 + matrix1.M23 * matrix2.M31 + matrix1.M24 * matrix2.
M41;
1990 result.M22 = matrix1.M21 * matrix2.M12 + matrix1.M22 * matrix2.M22 + matrix1.M23 * matrix2.M32 + matrix1.M24 * matrix2.
M42;
1991 result.M23 = matrix1.M21 * matrix2.M13 + matrix1.M22 * matrix2.M23 + matrix1.M23 * matrix2.M33 + matrix1.M24 * matrix2.
M43;
1992 result.M24 = matrix1.M21 * matrix2.M14 + matrix1.M22 * matrix2.M24 + matrix1.M23 * matrix2.M34 + matrix1.M24 * matrix2.
M44;
1993 result.M31 = matrix1.M31 * matrix2.M11 + matrix1.M32 * matrix2.M21 + matrix1.M33 * matrix2.M31 + matrix1.M34 * matrix2.
M41;
1994 result.M32 = matrix1.M31 * matrix2.M12 + matrix1.M32 * matrix2.M22 + matrix1.M33 * matrix2.M32 + matrix1.M34 * matrix2.
M42;
1995 result.M33 = matrix1.M31 * matrix2.M13 + matrix1.M32 * matrix2.M23 + matrix1.M33 * matrix2.M33 + matrix1.M34 * matrix2.
M43;
1996 result.M34 = matrix1.M31 * matrix2.M14 + matrix1.M32 * matrix2.M24 + matrix1.M33 * matrix2.M34 + matrix1.M34 * matrix2.
M44;
1997 result.M41 = matrix1.M41 * matrix2.M11 + matrix1.M42 * matrix2.M21 + matrix1.M43 * matrix2.M31 + matrix1.M44 * matrix2.
M41;
1998 result.M42 = matrix1.M41 * matrix2.M12 + matrix1.M42 * matrix2.M22 + matrix1.M43 * matrix2.M32 + matrix1.M44 * matrix2.
M42;
1999 result.M43 = matrix1.M41 * matrix2.M13 + matrix1.M42 * matrix2.M23 + matrix1.M43 * matrix2.M33 + matrix1.M44 * matrix2.
M43;
2000 result.M44 = matrix1.M41 * matrix2.M14 + matrix1.M42 * matrix2.M24 + matrix1.M43 * matrix2.M34 + matrix1.M44 * matrix2.
M44;
2006 float m = matrix1.M11 * matrix2.M11 + matrix1.M12 * matrix2.M21 + matrix1.M13 * matrix2.M31 + matrix1.M14 * matrix2.M41;
2007 float m2 = matrix1.M11 * matrix2.M12 + matrix1.M12 * matrix2.M22 + matrix1.M13 * matrix2.M32 + matrix1.M14 * matrix2.M42;
2008 float m3 = matrix1.M11 * matrix2.M13 + matrix1.M12 * matrix2.M23 + matrix1.M13 * matrix2.M33 + matrix1.M14 * matrix2.M43;
2009 float m4 = matrix1.M11 * matrix2.M14 + matrix1.M12 * matrix2.M24 + matrix1.M13 * matrix2.M34 + matrix1.M14 * matrix2.M44;
2010 float m5 = matrix1.M21 * matrix2.M11 + matrix1.M22 * matrix2.M21 + matrix1.M23 * matrix2.M31 + matrix1.M24 * matrix2.M41;
2011 float m6 = matrix1.M21 * matrix2.M12 + matrix1.M22 * matrix2.M22 + matrix1.M23 * matrix2.M32 + matrix1.M24 * matrix2.M42;
2012 float m7 = matrix1.M21 * matrix2.M13 + matrix1.M22 * matrix2.M23 + matrix1.M23 * matrix2.M33 + matrix1.M24 * matrix2.M43;
2013 float m8 = matrix1.M21 * matrix2.M14 + matrix1.M22 * matrix2.M24 + matrix1.M23 * matrix2.M34 + matrix1.M24 * matrix2.M44;
2014 float m9 = matrix1.M31 * matrix2.M11 + matrix1.M32 * matrix2.M21 + matrix1.M33 * matrix2.M31 + matrix1.M34 * matrix2.M41;
2015 float m10 = matrix1.M31 * matrix2.M12 + matrix1.M32 * matrix2.M22 + matrix1.M33 * matrix2.M32 + matrix1.M34 * matrix2.M42;
2016 float m11 = matrix1.M31 * matrix2.M13 + matrix1.M32 * matrix2.M23 + matrix1.M33 * matrix2.M33 + matrix1.M34 * matrix2.M43;
2017 float m12 = matrix1.M31 * matrix2.M14 + matrix1.M32 * matrix2.M24 + matrix1.M33 * matrix2.M34 + matrix1.M34 * matrix2.M44;
2018 float m13 = matrix1.M41 * matrix2.M11 + matrix1.M42 * matrix2.M21 + matrix1.M43 * matrix2.M31 + matrix1.M44 * matrix2.M41;
2019 float m14 = matrix1.M41 * matrix2.M12 + matrix1.M42 * matrix2.M22 + matrix1.M43 * matrix2.M32 + matrix1.M44 * matrix2.M42;
2020 float m15 = matrix1.M41 * matrix2.M13 + matrix1.M42 * matrix2.M23 + matrix1.M43 * matrix2.M33 + matrix1.M44 * matrix2.M43;
2021 float m16 = matrix1.M41 * matrix2.M14 + matrix1.M42 * matrix2.M24 + matrix1.M43 * matrix2.M34 + matrix1.M44 * matrix2.M44;
2043 result.M11 = matrix1.M11 * scaleFactor;
2044 result.M12 = matrix1.M12 * scaleFactor;
2045 result.M13 = matrix1.M13 * scaleFactor;
2046 result.M14 = matrix1.M14 * scaleFactor;
2047 result.M21 = matrix1.M21 * scaleFactor;
2048 result.M22 = matrix1.M22 * scaleFactor;
2049 result.M23 = matrix1.M23 * scaleFactor;
2050 result.M24 = matrix1.M24 * scaleFactor;
2051 result.M31 = matrix1.M31 * scaleFactor;
2052 result.M32 = matrix1.M32 * scaleFactor;
2053 result.M33 = matrix1.M33 * scaleFactor;
2054 result.M34 = matrix1.M34 * scaleFactor;
2055 result.M41 = matrix1.M41 * scaleFactor;
2056 result.M42 = matrix1.M42 * scaleFactor;
2057 result.M43 = matrix1.M43 * scaleFactor;
2058 result.M44 = matrix1.M44 * scaleFactor;
2064 result.M11 = matrix1.M11 * scaleFactor;
2065 result.M12 = matrix1.M12 * scaleFactor;
2066 result.M13 = matrix1.M13 * scaleFactor;
2067 result.M14 = matrix1.M14 * scaleFactor;
2068 result.M21 = matrix1.M21 * scaleFactor;
2069 result.M22 = matrix1.M22 * scaleFactor;
2070 result.M23 = matrix1.M23 * scaleFactor;
2071 result.M24 = matrix1.M24 * scaleFactor;
2072 result.M31 = matrix1.M31 * scaleFactor;
2073 result.M32 = matrix1.M32 * scaleFactor;
2074 result.M33 = matrix1.M33 * scaleFactor;
2075 result.M34 = matrix1.M34 * scaleFactor;
2076 result.M41 = matrix1.M41 * scaleFactor;
2077 result.M42 = matrix1.M42 * scaleFactor;
2078 result.M43 = matrix1.M43 * scaleFactor;
2079 result.M44 = matrix1.M44 * scaleFactor;
2085 result.M11 = matrix1.M11 / matrix2.
M11;
2086 result.M12 = matrix1.M12 / matrix2.
M12;
2087 result.M13 = matrix1.M13 / matrix2.
M13;
2088 result.M14 = matrix1.M14 / matrix2.
M14;
2089 result.M21 = matrix1.M21 / matrix2.
M21;
2090 result.M22 = matrix1.M22 / matrix2.
M22;
2091 result.M23 = matrix1.M23 / matrix2.
M23;
2092 result.M24 = matrix1.M24 / matrix2.
M24;
2093 result.M31 = matrix1.M31 / matrix2.
M31;
2094 result.M32 = matrix1.M32 / matrix2.
M32;
2095 result.M33 = matrix1.M33 / matrix2.
M33;
2096 result.M34 = matrix1.M34 / matrix2.
M34;
2097 result.M41 = matrix1.M41 / matrix2.
M41;
2098 result.M42 = matrix1.M42 / matrix2.
M42;
2099 result.M43 = matrix1.M43 / matrix2.
M43;
2100 result.M44 = matrix1.M44 / matrix2.
M44;
2106 result.M11 = matrix1.M11 / matrix2.M11;
2107 result.M12 = matrix1.M12 / matrix2.M12;
2108 result.M13 = matrix1.M13 / matrix2.M13;
2109 result.M14 = matrix1.M14 / matrix2.M14;
2110 result.M21 = matrix1.M21 / matrix2.M21;
2111 result.M22 = matrix1.M22 / matrix2.M22;
2112 result.M23 = matrix1.M23 / matrix2.M23;
2113 result.M24 = matrix1.M24 / matrix2.M24;
2114 result.M31 = matrix1.M31 / matrix2.M31;
2115 result.M32 = matrix1.M32 / matrix2.M32;
2116 result.M33 = matrix1.M33 / matrix2.M33;
2117 result.M34 = matrix1.M34 / matrix2.M34;
2118 result.M41 = matrix1.M41 / matrix2.M41;
2119 result.M42 = matrix1.M42 / matrix2.M42;
2120 result.M43 = matrix1.M43 / matrix2.M43;
2121 result.M44 = matrix1.M44 / matrix2.M44;
2126 float num = 1f / divider;
2128 result.M11 = matrix1.M11 * num;
2129 result.M12 = matrix1.M12 * num;
2130 result.M13 = matrix1.M13 * num;
2131 result.M14 = matrix1.M14 * num;
2132 result.M21 = matrix1.M21 * num;
2133 result.M22 = matrix1.M22 * num;
2134 result.M23 = matrix1.M23 * num;
2135 result.M24 = matrix1.M24 * num;
2136 result.M31 = matrix1.M31 * num;
2137 result.M32 = matrix1.M32 * num;
2138 result.M33 = matrix1.M33 * num;
2139 result.M34 = matrix1.M34 * num;
2140 result.M41 = matrix1.M41 * num;
2141 result.M42 = matrix1.M42 * num;
2142 result.M43 = matrix1.M43 * num;
2143 result.M44 = matrix1.M44 * num;
2149 float num = 1f / divider;
2150 result.M11 = matrix1.M11 * num;
2151 result.M12 = matrix1.M12 * num;
2152 result.M13 = matrix1.M13 * num;
2153 result.M14 = matrix1.M14 * num;
2154 result.M21 = matrix1.M21 * num;
2155 result.M22 = matrix1.M22 * num;
2156 result.M23 = matrix1.M23 * num;
2157 result.M24 = matrix1.M24 * num;
2158 result.M31 = matrix1.M31 * num;
2159 result.M32 = matrix1.M32 * num;
2160 result.M33 = matrix1.M33 * num;
2161 result.M34 = matrix1.M34 * num;
2162 result.M41 = matrix1.M41 * num;
2163 result.M42 = matrix1.M42 * num;
2164 result.M43 = matrix1.M43 * num;
2165 result.M44 = matrix1.M44 * num;
2171 result.M11 = 0f - matrix1.
M11;
2172 result.M12 = 0f - matrix1.
M12;
2173 result.M13 = 0f - matrix1.
M13;
2174 result.M14 = 0f - matrix1.
M14;
2175 result.M21 = 0f - matrix1.
M21;
2176 result.M22 = 0f - matrix1.
M22;
2177 result.M23 = 0f - matrix1.
M23;
2178 result.M24 = 0f - matrix1.
M24;
2179 result.M31 = 0f - matrix1.
M31;
2180 result.M32 = 0f - matrix1.
M32;
2181 result.M33 = 0f - matrix1.
M33;
2182 result.M34 = 0f - matrix1.
M34;
2183 result.M41 = 0f - matrix1.
M41;
2184 result.M42 = 0f - matrix1.
M42;
2185 result.M43 = 0f - matrix1.
M43;
2186 result.M44 = 0f - matrix1.
M44;
2192 if (matrix1.
M11 == matrix2.
M11 && matrix1.
M22 == matrix2.
M22 && matrix1.
M33 == matrix2.
M33 && matrix1.
M44 == matrix2.
M44 && matrix1.
M12 == matrix2.
M12 && matrix1.
M13 == matrix2.
M13 && matrix1.
M14 == matrix2.
M14 && matrix1.
M21 == matrix2.
M21 && matrix1.
M23 == matrix2.
M23 && matrix1.
M24 == matrix2.
M24 && matrix1.
M31 == matrix2.
M31 && matrix1.
M32 == matrix2.
M32 && matrix1.
M34 == matrix2.
M34 && matrix1.
M41 == matrix2.
M41 && matrix1.
M42 == matrix2.
M42)
2194 return matrix1.M43 == matrix2.
M43;
2201 if (matrix1.
M11 == matrix2.
M11 && matrix1.
M12 == matrix2.
M12 && matrix1.
M13 == matrix2.
M13 && matrix1.
M14 == matrix2.
M14 && matrix1.
M21 == matrix2.
M21 && matrix1.
M22 == matrix2.
M22 && matrix1.
M23 == matrix2.
M23 && matrix1.
M24 == matrix2.
M24 && matrix1.
M31 == matrix2.
M31 && matrix1.
M32 == matrix2.
M32 && matrix1.
M33 == matrix2.
M33 && matrix1.
M34 == matrix2.
M34 && matrix1.
M41 == matrix2.
M41 && matrix1.
M42 == matrix2.
M42 && matrix1.
M43 == matrix2.
M43)
2203 return matrix1.M44 != matrix2.
M44;
2211 result.M11 = matrix1.M11 + matrix2.
M11;
2212 result.M12 = matrix1.M12 + matrix2.
M12;
2213 result.M13 = matrix1.M13 + matrix2.
M13;
2214 result.M14 = matrix1.M14 + matrix2.
M14;
2215 result.M21 = matrix1.M21 + matrix2.
M21;
2216 result.M22 = matrix1.M22 + matrix2.
M22;
2217 result.M23 = matrix1.M23 + matrix2.
M23;
2218 result.M24 = matrix1.M24 + matrix2.
M24;
2219 result.M31 = matrix1.M31 + matrix2.
M31;
2220 result.M32 = matrix1.M32 + matrix2.
M32;
2221 result.M33 = matrix1.M33 + matrix2.
M33;
2222 result.M34 = matrix1.M34 + matrix2.
M34;
2223 result.M41 = matrix1.M41 + matrix2.
M41;
2224 result.M42 = matrix1.M42 + matrix2.
M42;
2225 result.M43 = matrix1.M43 + matrix2.
M43;
2226 result.M44 = matrix1.M44 + matrix2.
M44;
2233 result.M11 = matrix1.M11 - matrix2.
M11;
2234 result.M12 = matrix1.M12 - matrix2.
M12;
2235 result.M13 = matrix1.M13 - matrix2.
M13;
2236 result.M14 = matrix1.M14 - matrix2.
M14;
2237 result.M21 = matrix1.M21 - matrix2.
M21;
2238 result.M22 = matrix1.M22 - matrix2.
M22;
2239 result.M23 = matrix1.M23 - matrix2.
M23;
2240 result.M24 = matrix1.M24 - matrix2.
M24;
2241 result.M31 = matrix1.M31 - matrix2.
M31;
2242 result.M32 = matrix1.M32 - matrix2.
M32;
2243 result.M33 = matrix1.M33 - matrix2.
M33;
2244 result.M34 = matrix1.M34 - matrix2.
M34;
2245 result.M41 = matrix1.M41 - matrix2.
M41;
2246 result.M42 = matrix1.M42 - matrix2.
M42;
2247 result.M43 = matrix1.M43 - matrix2.
M43;
2248 result.M44 = matrix1.M44 - matrix2.
M44;
2255 result.M11 = matrix1.M11 * matrix2.M11 + matrix1.M12 * matrix2.M21 + matrix1.M13 * matrix2.M31 + matrix1.M14 * matrix2.
M41;
2256 result.M12 = matrix1.M11 * matrix2.M12 + matrix1.M12 * matrix2.M22 + matrix1.M13 * matrix2.M32 + matrix1.M14 * matrix2.
M42;
2257 result.M13 = matrix1.M11 * matrix2.M13 + matrix1.M12 * matrix2.M23 + matrix1.M13 * matrix2.M33 + matrix1.M14 * matrix2.
M43;
2258 result.M14 = matrix1.M11 * matrix2.M14 + matrix1.M12 * matrix2.M24 + matrix1.M13 * matrix2.M34 + matrix1.M14 * matrix2.
M44;
2259 result.M21 = matrix1.M21 * matrix2.M11 + matrix1.M22 * matrix2.M21 + matrix1.M23 * matrix2.M31 + matrix1.M24 * matrix2.
M41;
2260 result.M22 = matrix1.M21 * matrix2.M12 + matrix1.M22 * matrix2.M22 + matrix1.M23 * matrix2.M32 + matrix1.M24 * matrix2.
M42;
2261 result.M23 = matrix1.M21 * matrix2.M13 + matrix1.M22 * matrix2.M23 + matrix1.M23 * matrix2.M33 + matrix1.M24 * matrix2.
M43;
2262 result.M24 = matrix1.M21 * matrix2.M14 + matrix1.M22 * matrix2.M24 + matrix1.M23 * matrix2.M34 + matrix1.M24 * matrix2.
M44;
2263 result.M31 = matrix1.M31 * matrix2.M11 + matrix1.M32 * matrix2.M21 + matrix1.M33 * matrix2.M31 + matrix1.M34 * matrix2.
M41;
2264 result.M32 = matrix1.M31 * matrix2.M12 + matrix1.M32 * matrix2.M22 + matrix1.M33 * matrix2.M32 + matrix1.M34 * matrix2.
M42;
2265 result.M33 = matrix1.M31 * matrix2.M13 + matrix1.M32 * matrix2.M23 + matrix1.M33 * matrix2.M33 + matrix1.M34 * matrix2.
M43;
2266 result.M34 = matrix1.M31 * matrix2.M14 + matrix1.M32 * matrix2.M24 + matrix1.M33 * matrix2.M34 + matrix1.M34 * matrix2.
M44;
2267 result.M41 = matrix1.M41 * matrix2.M11 + matrix1.M42 * matrix2.M21 + matrix1.M43 * matrix2.M31 + matrix1.M44 * matrix2.
M41;
2268 result.M42 = matrix1.M41 * matrix2.M12 + matrix1.M42 * matrix2.M22 + matrix1.M43 * matrix2.M32 + matrix1.M44 * matrix2.
M42;
2269 result.M43 = matrix1.M41 * matrix2.M13 + matrix1.M42 * matrix2.M23 + matrix1.M43 * matrix2.M33 + matrix1.M44 * matrix2.
M43;
2270 result.M44 = matrix1.M41 * matrix2.M14 + matrix1.M42 * matrix2.M24 + matrix1.M43 * matrix2.M34 + matrix1.M44 * matrix2.
M44;
2277 result.M11 = matrix.M11 * scaleFactor;
2278 result.M12 = matrix.M12 * scaleFactor;
2279 result.M13 = matrix.M13 * scaleFactor;
2280 result.M14 = matrix.M14 * scaleFactor;
2281 result.M21 = matrix.M21 * scaleFactor;
2282 result.M22 = matrix.M22 * scaleFactor;
2283 result.M23 = matrix.M23 * scaleFactor;
2284 result.M24 = matrix.M24 * scaleFactor;
2285 result.M31 = matrix.M31 * scaleFactor;
2286 result.M32 = matrix.M32 * scaleFactor;
2287 result.M33 = matrix.M33 * scaleFactor;
2288 result.M34 = matrix.M34 * scaleFactor;
2289 result.M41 = matrix.M41 * scaleFactor;
2290 result.M42 = matrix.M42 * scaleFactor;
2291 result.M43 = matrix.M43 * scaleFactor;
2292 result.M44 = matrix.M44 * scaleFactor;
2299 result.M11 = matrix.M11 * scaleFactor;
2300 result.M12 = matrix.M12 * scaleFactor;
2301 result.M13 = matrix.M13 * scaleFactor;
2302 result.M14 = matrix.M14 * scaleFactor;
2303 result.M21 = matrix.M21 * scaleFactor;
2304 result.M22 = matrix.M22 * scaleFactor;
2305 result.M23 = matrix.M23 * scaleFactor;
2306 result.M24 = matrix.M24 * scaleFactor;
2307 result.M31 = matrix.M31 * scaleFactor;
2308 result.M32 = matrix.M32 * scaleFactor;
2309 result.M33 = matrix.M33 * scaleFactor;
2310 result.M34 = matrix.M34 * scaleFactor;
2311 result.M41 = matrix.M41 * scaleFactor;
2312 result.M42 = matrix.M42 * scaleFactor;
2313 result.M43 = matrix.M43 * scaleFactor;
2314 result.M44 = matrix.M44 * scaleFactor;
2321 result.M11 = matrix1.M11 / matrix2.
M11;
2322 result.M12 = matrix1.M12 / matrix2.
M12;
2323 result.M13 = matrix1.M13 / matrix2.
M13;
2324 result.M14 = matrix1.M14 / matrix2.
M14;
2325 result.M21 = matrix1.M21 / matrix2.
M21;
2326 result.M22 = matrix1.M22 / matrix2.
M22;
2327 result.M23 = matrix1.M23 / matrix2.
M23;
2328 result.M24 = matrix1.M24 / matrix2.
M24;
2329 result.M31 = matrix1.M31 / matrix2.
M31;
2330 result.M32 = matrix1.M32 / matrix2.
M32;
2331 result.M33 = matrix1.M33 / matrix2.
M33;
2332 result.M34 = matrix1.M34 / matrix2.
M34;
2333 result.M41 = matrix1.M41 / matrix2.
M41;
2334 result.M42 = matrix1.M42 / matrix2.
M42;
2335 result.M43 = matrix1.M43 / matrix2.
M43;
2336 result.M44 = matrix1.M44 / matrix2.
M44;
2342 float num = 1f / divider;
2344 result.M11 = matrix1.M11 * num;
2345 result.M12 = matrix1.M12 * num;
2346 result.M13 = matrix1.M13 * num;
2347 result.M14 = matrix1.M14 * num;
2348 result.M21 = matrix1.M21 * num;
2349 result.M22 = matrix1.M22 * num;
2350 result.M23 = matrix1.M23 * num;
2351 result.M24 = matrix1.M24 * num;
2352 result.M31 = matrix1.M31 * num;
2353 result.M32 = matrix1.M32 * num;
2354 result.M33 = matrix1.M33 * num;
2355 result.M34 = matrix1.M34 * num;
2356 result.M41 = matrix1.M41 * num;
2357 result.M42 = matrix1.M42 * num;
2358 result.M43 = matrix1.M43 * num;
2359 result.M44 = matrix1.M44 * num;
static string OutRangeFieldOfView
static string NegativePlaneDistance
static string OppositePlanes
static CultureInfo CurrentCulture
static double Cos(double d)
static double Tan(double a)
static double Sqrt(double d)
static double Abs(double value)
static double Sin(double a)
unsafe Vector3 * Element0
unsafe Vector3 * Element2
unsafe Vector3 * Element1
static void CreateShadow(ref Vector3 lightDirection, ref Plane plane, out Matrix result)
static void Multiply(ref Matrix matrix1, float scaleFactor, out Matrix result)
static Matrix CreateShadow(Vector3 lightDirection, Plane plane)
static void CreateRotationX(float radians, out Matrix result)
static void CreateScale(float xScale, float yScale, float zScale, out Matrix result)
Matrix(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)
unsafe bool Decompose(out Vector3 scale, out Quaternion rotation, out Vector3 translation)
static Matrix operator+(Matrix matrix1, Matrix matrix2)
static Matrix CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane)
static Matrix Transform(Matrix value, Quaternion rotation)
static Matrix Multiply(Matrix matrix1, float scaleFactor)
static void Multiply(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)
static void Add(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)
static void CreateScale(float scale, out Matrix result)
static void CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane, out Matrix result)
static Matrix CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)
static void Transpose(ref Matrix matrix, out Matrix result)
static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Matrix result)
static Matrix CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane)
static void Divide(ref Matrix matrix1, float divider, out Matrix result)
static void Transform(ref Matrix value, ref Quaternion rotation, out Matrix result)
static void CreateConstrainedBillboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 rotateAxis, Vector3? cameraForwardVector, Vector3? objectForwardVector, out Matrix result)
static Matrix CreateFromYawPitchRoll(float yaw, float pitch, float roll)
static Matrix CreateConstrainedBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3? cameraForwardVector, Vector3? objectForwardVector)
static Matrix CreateFromAxisAngle(Vector3 axis, float angle)
static void CreateFromAxisAngle(ref Vector3 axis, float angle, out Matrix result)
static Matrix Add(Matrix matrix1, Matrix matrix2)
static void CreateRotationY(float radians, out Matrix result)
static Matrix CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance)
static bool operator!=(Matrix matrix1, Matrix matrix2)
static Matrix Divide(Matrix matrix1, float divider)
static Matrix CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector)
static Matrix CreateBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3? cameraForwardVector)
static void CreateTranslation(ref Vector3 position, out Matrix result)
static Matrix operator*(Matrix matrix1, Matrix matrix2)
static Matrix operator-(Matrix matrix1)
static Matrix Invert(Matrix matrix)
static void CreateWorld(ref Vector3 position, ref Vector3 forward, ref Vector3 up, out Matrix result)
static void CreateLookAt(ref Vector3 cameraPosition, ref Vector3 cameraTarget, ref Vector3 cameraUpVector, out Matrix result)
static Matrix Multiply(Matrix matrix1, Matrix matrix2)
static Matrix CreateTranslation(Vector3 position)
static Matrix operator/(Matrix matrix1, Matrix matrix2)
override string ToString()
static void Invert(ref Matrix matrix, out Matrix result)
static Matrix CreateFromQuaternion(Quaternion quaternion)
static void CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance, out Matrix result)
static void CreateReflection(ref Plane value, out Matrix result)
static Matrix Divide(Matrix matrix1, Matrix matrix2)
static Matrix CreateScale(Vector3 scales)
static Matrix CreateScale(float scale)
static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix result)
static void Subtract(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)
override bool Equals(object obj)
static void CreateScale(ref Vector3 scales, out Matrix result)
static void CreateRotationZ(float radians, out Matrix result)
static Matrix CreateRotationX(float radians)
static Matrix Subtract(Matrix matrix1, Matrix matrix2)
static Matrix CreateTranslation(float xPosition, float yPosition, float zPosition)
static Matrix CreateScale(float xScale, float yScale, float zScale)
bool Equals(Matrix other)
static Matrix CreateReflection(Plane value)
static Matrix Lerp(Matrix matrix1, Matrix matrix2, float amount)
static void Lerp(ref Matrix matrix1, ref Matrix matrix2, float amount, out Matrix result)
static void CreateBillboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 cameraUpVector, Vector3? cameraForwardVector, out Matrix result)
static Matrix CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance)
static bool operator==(Matrix matrix1, Matrix matrix2)
static void Negate(ref Matrix matrix, out Matrix result)
static void CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance, out Matrix result)
static Matrix CreateWorld(Vector3 position, Vector3 forward, Vector3 up)
static void CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane, out Matrix result)
static Matrix CreateRotationY(float radians)
static Matrix Negate(Matrix matrix)
override int GetHashCode()
static void CreateTranslation(float xPosition, float yPosition, float zPosition, out Matrix result)
static void CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance, out Matrix result)
static Matrix CreateRotationZ(float radians)
static void Divide(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)
static Matrix Transpose(Matrix matrix)
static Quaternion CreateFromRotationMatrix(Matrix matrix)
static Quaternion Identity
static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll)
static Vector3 Multiply(Vector3 value1, Vector3 value2)
static float Dot(Vector3 vector1, Vector3 vector2)
static Vector3 Cross(Vector3 vector1, Vector3 vector2)