| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412 |
- using System;
- using System.Globalization;
- namespace UnityEngine
- {
- [Serializable]
- public struct Matrix4x4: IEquatable<Matrix4x4>
- {
- public static readonly Matrix4x4 identity = new Matrix4x4(1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f);
- public float m00;
- public float m01;
- public float m02;
- public float m03;
- public float m10;
- public float m11;
- public float m12;
- public float m13;
- public float m20;
- public float m21;
- public float m22;
- public float m23;
- public float m30;
- public float m31;
- public float m32;
- public float m33;
-
- public bool isIdentity
- {
- get
- {
- return this.m00 == 1f && this.m11 == 1f && this.m22 == 1f && this.m33 == 1f && // Check diagonal element first for early out.
- this.m12 == 0.0f && this.m13 == 0.0f && this.m13 == 0.0f && this.m21 == 0.0f && this.m23 == 0.0f && this.m23 == 0.0f && this.m31 == 0.0f && this.m32 == 0.0f && this.m33 == 0.0f;
- }
- }
- public Vector3 up
- {
- get
- {
- Vector3 vector3;
- vector3.x = this.m01;
- vector3.y = this.m11;
- vector3.z = this.m21;
- return vector3;
- }
- set
- {
- this.m01 = value.x;
- this.m11 = value.y;
- this.m21 = value.z;
- }
- }
- public Vector3 down
- {
- get
- {
- Vector3 vector3;
- vector3.x = -this.m01;
- vector3.y = -this.m11;
- vector3.z = -this.m21;
- return vector3;
- }
- set
- {
- this.m01 = -value.x;
- this.m11 = -value.y;
- this.m21 = -value.z;
- }
- }
- public Vector3 right
- {
- get
- {
- Vector3 vector3;
- vector3.x = this.m00;
- vector3.y = this.m10;
- vector3.z = this.m20;
- return vector3;
- }
- set
- {
- this.m00 = value.x;
- this.m10 = value.y;
- this.m20 = value.z;
- }
- }
- public Vector3 left
- {
- get
- {
- Vector3 vector3;
- vector3.x = -this.m00;
- vector3.y = -this.m10;
- vector3.z = -this.m20;
- return vector3;
- }
- set
- {
- this.m00 = -value.x;
- this.m10 = -value.y;
- this.m20 = -value.z;
- }
- }
- public Vector3 forward
- {
- get
- {
- Vector3 vector3;
- vector3.x = -this.m02;
- vector3.y = -this.m12;
- vector3.z = -this.m22;
- return vector3;
- }
- set
- {
- this.m02 = -value.x;
- this.m12 = -value.y;
- this.m22 = -value.z;
- }
- }
- public Vector3 back
- {
- get
- {
- Vector3 vector3;
- vector3.x = this.m02;
- vector3.y = this.m12;
- vector3.z = this.m22;
- return vector3;
- }
- set
- {
- this.m02 = value.x;
- this.m12 = value.y;
- this.m22 = value.z;
- }
- }
- public unsafe float this[int row, int col]
- {
- get
- {
- fixed (float* numPtr = &this.m00)
- return numPtr[row * 4 + col];
- }
- set
- {
- fixed (float* numPtr = &this.m00)
- numPtr[row * 4 + col] = value;
- }
- }
- public unsafe float this[int index]
- {
- get
- {
- fixed (float* numPtr = &this.m00)
- return numPtr[index];
- }
- set
- {
- fixed (float* numPtr = &this.m00)
- numPtr[index] = value;
- }
- }
- public Vector4 GetRow(int index)
- {
- Vector4 vector4;
- vector4.x = this[index, 0];
- vector4.y = this[index, 1];
- vector4.z = this[index, 2];
- vector4.w = this[index, 3];
- return vector4;
- }
- public void SetRow(int index, Vector4 value)
- {
- this[index, 0] = value.x;
- this[index, 1] = value.y;
- this[index, 2] = value.z;
- this[index, 3] = value.w;
- }
- public Vector4 GetColumn(int index)
- {
- Vector4 vector4;
- vector4.x = this[0, index];
- vector4.y = this[1, index];
- vector4.z = this[2, index];
- vector4.w = this[3, index];
- return vector4;
- }
- public void SetColumn(int index, Vector4 value)
- {
- this[0, index] = value.x;
- this[1, index] = value.y;
- this[2, index] = value.z;
- this[3, index] = value.w;
- }
- public Matrix4x4(
- float m00, float m01, float m02, float m03, float m10, float m11, float m12, float m13, float m20, float m21, float m22, float m23,
- float m30, float m31, float m32, float m33)
- {
- this.m00 = m00;
- this.m01 = m01;
- this.m02 = m02;
- this.m03 = m03;
- this.m10 = m10;
- this.m11 = m11;
- this.m12 = m12;
- this.m13 = m13;
- this.m20 = m20;
- this.m21 = m21;
- this.m22 = m22;
- this.m23 = m23;
- this.m30 = m30;
- this.m31 = m31;
- this.m32 = m32;
- this.m33 = m33;
- }
- public static Matrix4x4 CreateTranslation(Vector3 position)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = 1f;
- matrix44.m01 = 0.0f;
- matrix44.m02 = 0.0f;
- matrix44.m03 = position.x;
- matrix44.m10 = 0.0f;
- matrix44.m11 = 1f;
- matrix44.m12 = 0.0f;
- matrix44.m13 = position.y;
- matrix44.m20 = 0.0f;
- matrix44.m21 = 0.0f;
- matrix44.m22 = 1f;
- matrix44.m23 = position.z;
- matrix44.m30 = 0.0f;
- matrix44.m31 = 0.0f;
- matrix44.m32 = 0.0f;
- matrix44.m33 = 1f;
- return matrix44;
- }
- public Matrix4x4 inverse
- {
- get
- {
- return Matrix4x4.Invert(this);
- }
- }
- public static void CreateTranslation(ref Vector3 position, out Matrix4x4 matrix)
- {
- matrix.m00 = 1f;
- matrix.m01 = 0.0f;
- matrix.m02 = 0.0f;
- matrix.m03 = position.x;
- matrix.m10 = 0.0f;
- matrix.m11 = 1f;
- matrix.m12 = 0.0f;
- matrix.m13 = position.y;
- matrix.m20 = 0.0f;
- matrix.m21 = 0.0f;
- matrix.m22 = 1f;
- matrix.m23 = position.z;
- matrix.m30 = 0.0f;
- matrix.m31 = 0.0f;
- matrix.m32 = 0.0f;
- matrix.m33 = 1f;
- }
- public static Matrix4x4 CreateScale(Vector3 scales)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = scales.x;
- matrix44.m01 = 0.0f;
- matrix44.m02 = 0.0f;
- matrix44.m03 = 0.0f;
- matrix44.m10 = 0.0f;
- matrix44.m11 = scales.y;
- matrix44.m12 = 0.0f;
- matrix44.m13 = 0.0f;
- matrix44.m20 = 0.0f;
- matrix44.m21 = 0.0f;
- matrix44.m22 = scales.z;
- matrix44.m23 = 0.0f;
- matrix44.m30 = 0.0f;
- matrix44.m31 = 0.0f;
- matrix44.m32 = 0.0f;
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static Matrix4x4 TRS(Vector3 pos, Quaternion q, Vector3 s)
- {
- Matrix4x4 m1 = CreateTranslation(pos);
- Matrix4x4 m2 = CreateFromQuaternion(q);
- Matrix4x4 m3 = CreateScale(s);
- return m1 * m2 * m3;
- }
- public static Matrix4x4 Scale(Vector3 scales)
- {
- Matrix4x4 m1;
- CreateScale(ref scales, out m1);
- return m1;
- }
- public static void CreateScale(ref Vector3 scales, out Matrix4x4 matrix)
- {
- matrix.m00 = scales.x;
- matrix.m01 = 0.0f;
- matrix.m02 = 0.0f;
- matrix.m03 = 0.0f;
- matrix.m10 = 0.0f;
- matrix.m11 = scales.y;
- matrix.m12 = 0.0f;
- matrix.m13 = 0.0f;
- matrix.m20 = 0.0f;
- matrix.m21 = 0.0f;
- matrix.m22 = scales.z;
- matrix.m23 = 0.0f;
- matrix.m30 = 0.0f;
- matrix.m31 = 0.0f;
- matrix.m32 = 0.0f;
- matrix.m33 = 1f;
- }
- public static Matrix4x4 CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = 2f / width;
- matrix44.m10 = matrix44.m20 = matrix44.m30 = 0.0f;
- matrix44.m11 = 2f / height;
- matrix44.m01 = matrix44.m21 = matrix44.m31 = 0.0f;
- matrix44.m22 = (float) (1.0 / ((double) zNearPlane - (double) zFarPlane));
- matrix44.m02 = matrix44.m12 = matrix44.m32 = 0.0f;
- matrix44.m03 = matrix44.m13 = 0.0f;
- matrix44.m23 = zNearPlane / (zNearPlane - zFarPlane);
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static void CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane, out Matrix4x4 matrix)
- {
- matrix.m00 = 2f / width;
- matrix.m10 = matrix.m20 = matrix.m30 = 0.0f;
- matrix.m11 = 2f / height;
- matrix.m01 = matrix.m21 = matrix.m31 = 0.0f;
- matrix.m22 = (float) (1.0 / ((double) zNearPlane - (double) zFarPlane));
- matrix.m02 = matrix.m12 = matrix.m32 = 0.0f;
- matrix.m03 = matrix.m13 = 0.0f;
- matrix.m23 = zNearPlane / (zNearPlane - zFarPlane);
- matrix.m33 = 1f;
- }
- public static Matrix4x4 CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector)
- {
- Vector3 vector3_1 = Vector3.Normalize(cameraPosition - cameraTarget);
- Vector3 vector3_2 = Vector3.Normalize(Vector3.Cross(cameraUpVector, vector3_1));
- Vector3 vector1 = Vector3.Cross(vector3_1, vector3_2);
- Matrix4x4 matrix44;
- matrix44.m00 = vector3_2.x;
- matrix44.m10 = vector1.x;
- matrix44.m20 = vector3_1.x;
- matrix44.m30 = 0.0f;
- matrix44.m01 = vector3_2.y;
- matrix44.m11 = vector1.y;
- matrix44.m21 = vector3_1.y;
- matrix44.m31 = 0.0f;
- matrix44.m02 = vector3_2.z;
- matrix44.m12 = vector1.z;
- matrix44.m22 = vector3_1.z;
- matrix44.m32 = 0.0f;
- matrix44.m03 = -Vector3.Dot(vector3_2, cameraPosition);
- matrix44.m13 = -Vector3.Dot(vector1, cameraPosition);
- matrix44.m23 = -Vector3.Dot(vector3_1, cameraPosition);
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static void CreateLookAt(ref Vector3 cameraPosition, ref Vector3 cameraTarget, ref Vector3 cameraUpVector, out Matrix4x4 matrix)
- {
- Vector3 vector3_1 = Vector3.Normalize(cameraPosition - cameraTarget);
- Vector3 vector3_2 = Vector3.Normalize(Vector3.Cross(cameraUpVector, vector3_1));
- Vector3 vector1 = Vector3.Cross(vector3_1, vector3_2);
- matrix.m00 = vector3_2.x;
- matrix.m10 = vector1.x;
- matrix.m20 = vector3_1.x;
- matrix.m30 = 0.0f;
- matrix.m01 = vector3_2.y;
- matrix.m11 = vector1.y;
- matrix.m21 = vector3_1.y;
- matrix.m31 = 0.0f;
- matrix.m02 = vector3_2.z;
- matrix.m12 = vector1.z;
- matrix.m22 = vector3_1.z;
- matrix.m32 = 0.0f;
- matrix.m03 = -Vector3.Dot(vector3_2, cameraPosition);
- matrix.m13 = -Vector3.Dot(vector1, cameraPosition);
- matrix.m23 = -Vector3.Dot(vector3_1, cameraPosition);
- matrix.m33 = 1f;
- }
- public static Matrix4x4 CreateFromQuaternion(Quaternion quaternion)
- {
- float num1 = quaternion.x * quaternion.x;
- float num2 = quaternion.y * quaternion.y;
- float num3 = quaternion.z * quaternion.z;
- float num4 = quaternion.x * quaternion.y;
- float num5 = quaternion.z * quaternion.w;
- float num6 = quaternion.z * quaternion.x;
- float num7 = quaternion.y * quaternion.w;
- float num8 = quaternion.y * quaternion.z;
- float num9 = quaternion.x * quaternion.w;
- Matrix4x4 matrix44;
- matrix44.m00 = (float) (1.0 - 2.0 * ((double) num2 + (double) num3));
- matrix44.m10 = (float) (2.0 * ((double) num4 + (double) num5));
- matrix44.m20 = (float) (2.0 * ((double) num6 - (double) num7));
- matrix44.m30 = 0.0f;
- matrix44.m01 = (float) (2.0 * ((double) num4 - (double) num5));
- matrix44.m11 = (float) (1.0 - 2.0 * ((double) num3 + (double) num1));
- matrix44.m21 = (float) (2.0 * ((double) num8 + (double) num9));
- matrix44.m31 = 0.0f;
- matrix44.m02 = (float) (2.0 * ((double) num6 + (double) num7));
- matrix44.m12 = (float) (2.0 * ((double) num8 - (double) num9));
- matrix44.m22 = (float) (1.0 - 2.0 * ((double) num2 + (double) num1));
- matrix44.m32 = 0.0f;
- matrix44.m03 = 0.0f;
- matrix44.m13 = 0.0f;
- matrix44.m23 = 0.0f;
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix4x4 matrix)
- {
- float num1 = quaternion.x * quaternion.x;
- float num2 = quaternion.y * quaternion.y;
- float num3 = quaternion.z * quaternion.z;
- float num4 = quaternion.x * quaternion.y;
- float num5 = quaternion.z * quaternion.w;
- float num6 = quaternion.z * quaternion.x;
- float num7 = quaternion.y * quaternion.w;
- float num8 = quaternion.y * quaternion.z;
- float num9 = quaternion.x * quaternion.w;
- matrix.m00 = (float) (1.0 - 2.0 * ((double) num2 + (double) num3));
- matrix.m10 = (float) (2.0 * ((double) num4 + (double) num5));
- matrix.m20 = (float) (2.0 * ((double) num6 - (double) num7));
- matrix.m30 = 0.0f;
- matrix.m01 = (float) (2.0 * ((double) num4 - (double) num5));
- matrix.m11 = (float) (1.0 - 2.0 * ((double) num3 + (double) num1));
- matrix.m21 = (float) (2.0 * ((double) num8 + (double) num9));
- matrix.m31 = 0.0f;
- matrix.m02 = (float) (2.0 * ((double) num6 + (double) num7));
- matrix.m12 = (float) (2.0 * ((double) num8 - (double) num9));
- matrix.m22 = (float) (1.0 - 2.0 * ((double) num2 + (double) num1));
- matrix.m32 = 0.0f;
- matrix.m03 = 0.0f;
- matrix.m13 = 0.0f;
- matrix.m23 = 0.0f;
- matrix.m33 = 1f;
- }
- public static Matrix4x4 CreateFromYawPitchRoll(float yaw, float pitch, float roll)
- {
- Quaternion result;
- Quaternion.CreateFromYawPitchRoll(yaw, pitch, roll, out result);
- return Matrix4x4.CreateFromQuaternion(result);
- }
- public static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Matrix4x4 result)
- {
- Quaternion result1;
- Quaternion.CreateFromYawPitchRoll(yaw, pitch, roll, out result1);
- result = Matrix4x4.CreateFromQuaternion(result1);
- }
- public static Matrix4x4 CreateRotationX(float radians)
- {
- float num1 = (float) Math.Cos((double) radians);
- float num2 = (float) Math.Sin((double) radians);
- Matrix4x4 matrix44;
- matrix44.m00 = 1f;
- matrix44.m10 = 0.0f;
- matrix44.m20 = 0.0f;
- matrix44.m30 = 0.0f;
- matrix44.m01 = 0.0f;
- matrix44.m11 = num1;
- matrix44.m21 = num2;
- matrix44.m31 = 0.0f;
- matrix44.m02 = 0.0f;
- matrix44.m12 = -num2;
- matrix44.m22 = num1;
- matrix44.m32 = 0.0f;
- matrix44.m03 = 0.0f;
- matrix44.m13 = 0.0f;
- matrix44.m23 = 0.0f;
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static void CreateRotationX(float radians, out Matrix4x4 result)
- {
- float num1 = (float) Math.Cos((double) radians);
- float num2 = (float) Math.Sin((double) radians);
- result.m00 = 1f;
- result.m10 = 0.0f;
- result.m20 = 0.0f;
- result.m30 = 0.0f;
- result.m01 = 0.0f;
- result.m11 = num1;
- result.m21 = num2;
- result.m31 = 0.0f;
- result.m02 = 0.0f;
- result.m12 = -num2;
- result.m22 = num1;
- result.m32 = 0.0f;
- result.m03 = 0.0f;
- result.m13 = 0.0f;
- result.m23 = 0.0f;
- result.m33 = 1f;
- }
- public static Matrix4x4 CreateRotationY(float radians)
- {
- float num1 = (float) Math.Cos((double) radians);
- float num2 = (float) Math.Sin((double) radians);
- Matrix4x4 matrix44;
- matrix44.m00 = num1;
- matrix44.m10 = 0.0f;
- matrix44.m20 = -num2;
- matrix44.m30 = 0.0f;
- matrix44.m01 = 0.0f;
- matrix44.m11 = 1f;
- matrix44.m21 = 0.0f;
- matrix44.m31 = 0.0f;
- matrix44.m02 = num2;
- matrix44.m12 = 0.0f;
- matrix44.m22 = num1;
- matrix44.m32 = 0.0f;
- matrix44.m03 = 0.0f;
- matrix44.m13 = 0.0f;
- matrix44.m23 = 0.0f;
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static void CreateRotationY(float radians, out Matrix4x4 result)
- {
- float num1 = (float) Math.Cos((double) radians);
- float num2 = (float) Math.Sin((double) radians);
- result.m00 = num1;
- result.m10 = 0.0f;
- result.m20 = -num2;
- result.m30 = 0.0f;
- result.m01 = 0.0f;
- result.m11 = 1f;
- result.m21 = 0.0f;
- result.m31 = 0.0f;
- result.m02 = num2;
- result.m12 = 0.0f;
- result.m22 = num1;
- result.m32 = 0.0f;
- result.m03 = 0.0f;
- result.m13 = 0.0f;
- result.m23 = 0.0f;
- result.m33 = 1f;
- }
- public static Matrix4x4 CreateRotationZ(float radians)
- {
- float num1 = (float) Math.Cos((double) radians);
- float num2 = (float) Math.Sin((double) radians);
- Matrix4x4 matrix44;
- matrix44.m00 = num1;
- matrix44.m10 = num2;
- matrix44.m20 = 0.0f;
- matrix44.m30 = 0.0f;
- matrix44.m01 = -num2;
- matrix44.m11 = num1;
- matrix44.m21 = 0.0f;
- matrix44.m31 = 0.0f;
- matrix44.m02 = 0.0f;
- matrix44.m12 = 0.0f;
- matrix44.m22 = 1f;
- matrix44.m32 = 0.0f;
- matrix44.m03 = 0.0f;
- matrix44.m13 = 0.0f;
- matrix44.m23 = 0.0f;
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static void CreateRotationZ(float radians, out Matrix4x4 result)
- {
- float num1 = (float) Math.Cos((double) radians);
- float num2 = (float) Math.Sin((double) radians);
- result.m00 = num1;
- result.m10 = num2;
- result.m20 = 0.0f;
- result.m30 = 0.0f;
- result.m01 = -num2;
- result.m11 = num1;
- result.m21 = 0.0f;
- result.m31 = 0.0f;
- result.m02 = 0.0f;
- result.m12 = 0.0f;
- result.m22 = 1f;
- result.m32 = 0.0f;
- result.m03 = 0.0f;
- result.m13 = 0.0f;
- result.m23 = 0.0f;
- result.m33 = 1f;
- }
- public static Matrix4x4 CreateFromAxisAngle(Vector3 axis, float angle)
- {
- float x = axis.x;
- float y = axis.y;
- float z = axis.z;
- float num1 = (float) Math.Sin((double) angle);
- float num2 = (float) Math.Cos((double) angle);
- float num3 = x * x;
- float num4 = y * y;
- float num5 = z * z;
- float num6 = x * y;
- float num7 = x * z;
- float num8 = y * z;
- Matrix4x4 matrix44;
- matrix44.m00 = num3 + num2 * (1f - num3);
- matrix44.m10 = (float) ((double) num6 - (double) num2 * (double) num6 + (double) num1 * (double) z);
- matrix44.m20 = (float) ((double) num7 - (double) num2 * (double) num7 - (double) num1 * (double) y);
- matrix44.m30 = 0.0f;
- matrix44.m01 = (float) ((double) num6 - (double) num2 * (double) num6 - (double) num1 * (double) z);
- matrix44.m11 = num4 + num2 * (1f - num4);
- matrix44.m21 = (float) ((double) num8 - (double) num2 * (double) num8 + (double) num1 * (double) x);
- matrix44.m31 = 0.0f;
- matrix44.m02 = (float) ((double) num7 - (double) num2 * (double) num7 + (double) num1 * (double) y);
- matrix44.m12 = (float) ((double) num8 - (double) num2 * (double) num8 - (double) num1 * (double) x);
- matrix44.m22 = num5 + num2 * (1f - num5);
- matrix44.m32 = 0.0f;
- matrix44.m03 = 0.0f;
- matrix44.m13 = 0.0f;
- matrix44.m23 = 0.0f;
- matrix44.m33 = 1f;
- return matrix44;
- }
- public static void CreateFromAxisAngle(ref Vector3 axis, float angle, out Matrix4x4 result)
- {
- float x = axis.x;
- float y = axis.y;
- float z = axis.z;
- float num1 = (float) Math.Sin((double) angle);
- float num2 = (float) Math.Cos((double) angle);
- float num3 = x * x;
- float num4 = y * y;
- float num5 = z * z;
- float num6 = x * y;
- float num7 = x * z;
- float num8 = y * z;
- result.m00 = num3 + num2 * (1f - num3);
- result.m10 = (float) ((double) num6 - (double) num2 * (double) num6 + (double) num1 * (double) z);
- result.m20 = (float) ((double) num7 - (double) num2 * (double) num7 - (double) num1 * (double) y);
- result.m30 = 0.0f;
- result.m01 = (float) ((double) num6 - (double) num2 * (double) num6 - (double) num1 * (double) z);
- result.m11 = num4 + num2 * (1f - num4);
- result.m21 = (float) ((double) num8 - (double) num2 * (double) num8 + (double) num1 * (double) x);
- result.m31 = 0.0f;
- result.m02 = (float) ((double) num7 - (double) num2 * (double) num7 + (double) num1 * (double) y);
- result.m12 = (float) ((double) num8 - (double) num2 * (double) num8 - (double) num1 * (double) x);
- result.m22 = num5 + num2 * (1f - num5);
- result.m32 = 0.0f;
- result.m03 = 0.0f;
- result.m13 = 0.0f;
- result.m23 = 0.0f;
- result.m33 = 1f;
- }
- public void Decompose(out Vector3 scale, out Quaternion rotation, out Vector3 translation)
- {
- Matrix4x4 identity = Matrix4x4.identity;
- float num1 = 1f / (float) Math.Sqrt((double) this[0, 0] * (double) this[0, 0] + (double) this[1, 0] * (double) this[1, 0] +
- (double) this[2, 0] * (double) this[2, 0]);
- identity[0, 0] = this[0, 0] * num1;
- identity[1, 0] = this[1, 0] * num1;
- identity[2, 0] = this[2, 0] * num1;
- float num2 = (float) ((double) identity[0, 0] * (double) this[0, 1] + (double) identity[1, 0] * (double) this[1, 1] +
- (double) identity[2, 0] * (double) this[2, 1]);
- identity[0, 1] = this[0, 1] - num2 * identity[0, 0];
- identity[1, 1] = this[1, 1] - num2 * identity[1, 0];
- identity[2, 1] = this[2, 1] - num2 * identity[2, 0];
- float num3 = 1f / (float) Math.Sqrt((double) identity[0, 1] * (double) identity[0, 1] +
- (double) identity[1, 1] * (double) identity[1, 1] +
- (double) identity[2, 1] * (double) identity[2, 1]);
- identity[0, 1] *= num3;
- identity[1, 1] *= num3;
- identity[2, 1] *= num3;
- float num4 = (float) ((double) identity[0, 0] * (double) this[0, 2] + (double) identity[1, 0] * (double) this[1, 2] +
- (double) identity[2, 0] * (double) this[2, 2]);
- identity[0, 2] = this[0, 2] - num4 * identity[0, 0];
- identity[1, 2] = this[1, 2] - num4 * identity[1, 0];
- identity[2, 2] = this[2, 2] - num4 * identity[2, 0];
- float num5 = (float) ((double) identity[0, 1] * (double) this[0, 2] + (double) identity[1, 1] * (double) this[1, 2] +
- (double) identity[2, 1] * (double) this[2, 2]);
- identity[0, 2] -= num5 * identity[0, 1];
- identity[1, 2] -= num5 * identity[1, 1];
- identity[2, 2] -= num5 * identity[2, 1];
- float num6 = 1f / (float) Math.Sqrt((double) identity[0, 2] * (double) identity[0, 2] +
- (double) identity[1, 2] * (double) identity[1, 2] +
- (double) identity[2, 2] * (double) identity[2, 2]);
- identity[0, 2] *= num6;
- identity[1, 2] *= num6;
- identity[2, 2] *= num6;
- if ((double) identity[0, 0] * (double) identity[1, 1] * (double) identity[2, 2] +
- (double) identity[0, 1] * (double) identity[1, 2] * (double) identity[2, 0] +
- (double) identity[0, 2] * (double) identity[1, 0] * (double) identity[2, 1] -
- (double) identity[0, 2] * (double) identity[1, 1] * (double) identity[2, 0] -
- (double) identity[0, 1] * (double) identity[1, 0] * (double) identity[2, 2] -
- (double) identity[0, 0] * (double) identity[1, 2] * (double) identity[2, 1] < 0.0)
- {
- for (int index1 = 0; index1 < 3; ++index1)
- {
- for (int index2 = 0; index2 < 3; ++index2)
- identity[index1, index2] = -identity[index1, index2];
- }
- }
- scale =
- new
- Vector3((float) ((double) identity[0, 0] * (double) this[0, 0] + (double) identity[1, 0] * (double) this[1, 0] + (double) identity[2, 0] * (double) this[2, 0]),
- (float) ((double) identity[0, 1] * (double) this[0, 1] + (double) identity[1, 1] * (double) this[1, 1] +
- (double) identity[2, 1] * (double) this[2, 1]),
- (float) ((double) identity[0, 2] * (double) this[0, 2] + (double) identity[1, 2] * (double) this[1, 2] +
- (double) identity[2, 2] * (double) this[2, 2]));
- rotation = Quaternion.CreateFromRotationMatrix(identity);
- translation = new Vector3(this[0, 3], this[1, 3], this[2, 3]);
- }
- public override string ToString()
- {
- CultureInfo currentCulture = CultureInfo.CurrentCulture;
- return
- string.Format((IFormatProvider) currentCulture, "{0}, {1}, {2}, {3}; ",
- (object) this.m00.ToString((IFormatProvider) currentCulture),
- (object) this.m01.ToString((IFormatProvider) currentCulture),
- (object) this.m02.ToString((IFormatProvider) currentCulture),
- (object) this.m03.ToString((IFormatProvider) currentCulture)) +
- string.Format((IFormatProvider) currentCulture, "{0}, {1}, {2}, {3}; ",
- (object) this.m10.ToString((IFormatProvider) currentCulture),
- (object) this.m11.ToString((IFormatProvider) currentCulture),
- (object) this.m12.ToString((IFormatProvider) currentCulture),
- (object) this.m13.ToString((IFormatProvider) currentCulture)) +
- string.Format((IFormatProvider) currentCulture, "{0}, {1}, {2}, {3}; ",
- (object) this.m20.ToString((IFormatProvider) currentCulture),
- (object) this.m21.ToString((IFormatProvider) currentCulture),
- (object) this.m22.ToString((IFormatProvider) currentCulture),
- (object) this.m23.ToString((IFormatProvider) currentCulture)) + string.Format((IFormatProvider) currentCulture,
- "{0}, {1}, {2}, {3}",
- (object) this.m30
- .ToString((IFormatProvider)
- currentCulture),
- (object) this.m31
- .ToString((IFormatProvider)
- currentCulture),
- (object) this.m32
- .ToString((IFormatProvider)
- currentCulture),
- (object) this.m33
- .ToString((IFormatProvider)
- currentCulture));
- }
- public bool Equals(Matrix4x4 other)
- {
- if ((double) this.m00 == (double) other.m00 && (double) this.m11 == (double) other.m11 &&
- ((double) this.m22 == (double) other.m22 && (double) this.m33 == (double) other.m33) &&
- ((double) this.m01 == (double) other.m01 && (double) this.m02 == (double) other.m02 &&
- ((double) this.m03 == (double) other.m03 && (double) this.m10 == (double) other.m10)) &&
- ((double) this.m12 == (double) other.m12 && (double) this.m13 == (double) other.m13 &&
- ((double) this.m20 == (double) other.m20 && (double) this.m21 == (double) other.m21) &&
- ((double) this.m23 == (double) other.m23 && (double) this.m30 == (double) other.m30 && (double) this.m31 == (double) other.m31)))
- return (double) this.m32 == (double) other.m32;
- return false;
- }
- public override bool Equals(object obj)
- {
- bool flag = false;
- if (obj is Matrix4x4)
- flag = this.Equals((Matrix4x4) obj);
- return flag;
- }
- public override int GetHashCode()
- {
- return this.m00.GetHashCode() + this.m01.GetHashCode() + this.m02.GetHashCode() + this.m03.GetHashCode() + this.m10.GetHashCode() +
- this.m11.GetHashCode() + this.m12.GetHashCode() + this.m13.GetHashCode() + this.m20.GetHashCode() + this.m21.GetHashCode() +
- this.m22.GetHashCode() + this.m23.GetHashCode() + this.m30.GetHashCode() + this.m31.GetHashCode() + this.m32.GetHashCode() +
- this.m33.GetHashCode();
- }
- public static Matrix4x4 Transpose(Matrix4x4 matrix)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = matrix.m00;
- matrix44.m01 = matrix.m10;
- matrix44.m02 = matrix.m20;
- matrix44.m03 = matrix.m30;
- matrix44.m10 = matrix.m01;
- matrix44.m11 = matrix.m11;
- matrix44.m12 = matrix.m21;
- matrix44.m13 = matrix.m31;
- matrix44.m20 = matrix.m02;
- matrix44.m21 = matrix.m12;
- matrix44.m22 = matrix.m22;
- matrix44.m23 = matrix.m32;
- matrix44.m30 = matrix.m03;
- matrix44.m31 = matrix.m13;
- matrix44.m32 = matrix.m23;
- matrix44.m33 = matrix.m33;
- return matrix44;
- }
- public static void Transpose(ref Matrix4x4 matrix, out Matrix4x4 result)
- {
- result.m00 = matrix.m00;
- result.m01 = matrix.m10;
- result.m02 = matrix.m20;
- result.m03 = matrix.m30;
- result.m10 = matrix.m01;
- result.m11 = matrix.m11;
- result.m12 = matrix.m21;
- result.m13 = matrix.m31;
- result.m20 = matrix.m02;
- result.m21 = matrix.m12;
- result.m22 = matrix.m22;
- result.m23 = matrix.m32;
- result.m30 = matrix.m03;
- result.m31 = matrix.m13;
- result.m32 = matrix.m23;
- result.m33 = matrix.m33;
- }
- public float Determinant()
- {
- float m00 = this.m00;
- float m10 = this.m10;
- float m20 = this.m20;
- float m30 = this.m30;
- float m01 = this.m01;
- float m11 = this.m11;
- float m21 = this.m21;
- float m31 = this.m31;
- float m02 = this.m02;
- float m12 = this.m12;
- float m22 = this.m22;
- float m32 = this.m32;
- float m03 = this.m03;
- float m13 = this.m13;
- float m23 = this.m23;
- float m33 = this.m33;
- float num1 = (float) ((double) m22 * (double) m33 - (double) m32 * (double) m23);
- float num2 = (float) ((double) m12 * (double) m33 - (double) m32 * (double) m13);
- float num3 = (float) ((double) m12 * (double) m23 - (double) m22 * (double) m13);
- float num4 = (float) ((double) m02 * (double) m33 - (double) m32 * (double) m03);
- float num5 = (float) ((double) m02 * (double) m23 - (double) m22 * (double) m03);
- float num6 = (float) ((double) m02 * (double) m13 - (double) m12 * (double) m03);
- return (float) ((double) m00 * ((double) m11 * (double) num1 - (double) m21 * (double) num2 + (double) m31 * (double) num3) -
- (double) m10 * ((double) m01 * (double) num1 - (double) m21 * (double) num4 + (double) m31 * (double) num5) +
- (double) m20 * ((double) m01 * (double) num2 - (double) m11 * (double) num4 + (double) m31 * (double) num6) -
- (double) m30 * ((double) m01 * (double) num3 - (double) m11 * (double) num5 + (double) m21 * (double) num6));
- }
- public static Matrix4x4 Invert(Matrix4x4 matrix)
- {
- float m00 = matrix.m00;
- float m10 = matrix.m10;
- float m20 = matrix.m20;
- float m30 = matrix.m30;
- float m01 = matrix.m01;
- float m11 = matrix.m11;
- float m21 = matrix.m21;
- float m31 = matrix.m31;
- float m02 = matrix.m02;
- float m12 = matrix.m12;
- float m22 = matrix.m22;
- float m32 = matrix.m32;
- float m03 = matrix.m03;
- float m13 = matrix.m13;
- float m23 = matrix.m23;
- float m33 = matrix.m33;
- float num1 = (float) ((double) m22 * (double) m33 - (double) m32 * (double) m23);
- float num2 = (float) ((double) m12 * (double) m33 - (double) m32 * (double) m13);
- float num3 = (float) ((double) m12 * (double) m23 - (double) m22 * (double) m13);
- float num4 = (float) ((double) m02 * (double) m33 - (double) m32 * (double) m03);
- float num5 = (float) ((double) m02 * (double) m23 - (double) m22 * (double) m03);
- float num6 = (float) ((double) m02 * (double) m13 - (double) m12 * (double) m03);
- float num7 = (float) ((double) m11 * (double) num1 - (double) m21 * (double) num2 + (double) m31 * (double) num3);
- float num8 = (float) -((double) m01 * (double) num1 - (double) m21 * (double) num4 + (double) m31 * (double) num5);
- float num9 = (float) ((double) m01 * (double) num2 - (double) m11 * (double) num4 + (double) m31 * (double) num6);
- float num10 = (float) -((double) m01 * (double) num3 - (double) m11 * (double) num5 + (double) m21 * (double) num6);
- float num11 = (float) (1.0 / ((double) m00 * (double) num7 + (double) m10 * (double) num8 + (double) m20 * (double) num9 +
- (double) m30 * (double) num10));
- Matrix4x4 matrix44;
- matrix44.m00 = num7 * num11;
- matrix44.m01 = num8 * num11;
- matrix44.m02 = num9 * num11;
- matrix44.m03 = num10 * num11;
- matrix44.m10 = (float) -((double) m10 * (double) num1 - (double) m20 * (double) num2 + (double) m30 * (double) num3) * num11;
- matrix44.m11 = (float) ((double) m00 * (double) num1 - (double) m20 * (double) num4 + (double) m30 * (double) num5) * num11;
- matrix44.m12 = (float) -((double) m00 * (double) num2 - (double) m10 * (double) num4 + (double) m30 * (double) num6) * num11;
- matrix44.m13 = (float) ((double) m00 * (double) num3 - (double) m10 * (double) num5 + (double) m20 * (double) num6) * num11;
- float num12 = (float) ((double) m21 * (double) m33 - (double) m31 * (double) m23);
- float num13 = (float) ((double) m11 * (double) m33 - (double) m31 * (double) m13);
- float num14 = (float) ((double) m11 * (double) m23 - (double) m21 * (double) m13);
- float num15 = (float) ((double) m01 * (double) m33 - (double) m31 * (double) m03);
- float num16 = (float) ((double) m01 * (double) m23 - (double) m21 * (double) m03);
- float num17 = (float) ((double) m01 * (double) m13 - (double) m11 * (double) m03);
- matrix44.m20 = (float) ((double) m10 * (double) num12 - (double) m20 * (double) num13 + (double) m30 * (double) num14) * num11;
- matrix44.m21 = (float) -((double) m00 * (double) num12 - (double) m20 * (double) num15 + (double) m30 * (double) num16) * num11;
- matrix44.m22 = (float) ((double) m00 * (double) num13 - (double) m10 * (double) num15 + (double) m30 * (double) num17) * num11;
- matrix44.m23 = (float) -((double) m00 * (double) num14 - (double) m10 * (double) num16 + (double) m20 * (double) num17) * num11;
- float num18 = (float) ((double) m21 * (double) m32 - (double) m31 * (double) m22);
- float num19 = (float) ((double) m11 * (double) m32 - (double) m31 * (double) m12);
- float num20 = (float) ((double) m11 * (double) m22 - (double) m21 * (double) m12);
- float num21 = (float) ((double) m01 * (double) m32 - (double) m31 * (double) m02);
- float num22 = (float) ((double) m01 * (double) m22 - (double) m21 * (double) m02);
- float num23 = (float) ((double) m01 * (double) m12 - (double) m11 * (double) m02);
- matrix44.m30 = (float) -((double) m10 * (double) num18 - (double) m20 * (double) num19 + (double) m30 * (double) num20) * num11;
- matrix44.m31 = (float) ((double) m00 * (double) num18 - (double) m20 * (double) num21 + (double) m30 * (double) num22) * num11;
- matrix44.m32 = (float) -((double) m00 * (double) num19 - (double) m10 * (double) num21 + (double) m30 * (double) num23) * num11;
- matrix44.m33 = (float) ((double) m00 * (double) num20 - (double) m10 * (double) num22 + (double) m20 * (double) num23) * num11;
- return matrix44;
- }
- public static void Invert(ref Matrix4x4 matrix, out Matrix4x4 result)
- {
- float m00 = matrix.m00;
- float m10 = matrix.m10;
- float m20 = matrix.m20;
- float m30 = matrix.m30;
- float m01 = matrix.m01;
- float m11 = matrix.m11;
- float m21 = matrix.m21;
- float m31 = matrix.m31;
- float m02 = matrix.m02;
- float m12 = matrix.m12;
- float m22 = matrix.m22;
- float m32 = matrix.m32;
- float m03 = matrix.m03;
- float m13 = matrix.m13;
- float m23 = matrix.m23;
- float m33 = matrix.m33;
- float num1 = (float) ((double) m22 * (double) m33 - (double) m32 * (double) m23);
- float num2 = (float) ((double) m12 * (double) m33 - (double) m32 * (double) m13);
- float num3 = (float) ((double) m12 * (double) m23 - (double) m22 * (double) m13);
- float num4 = (float) ((double) m02 * (double) m33 - (double) m32 * (double) m03);
- float num5 = (float) ((double) m02 * (double) m23 - (double) m22 * (double) m03);
- float num6 = (float) ((double) m02 * (double) m13 - (double) m12 * (double) m03);
- float num7 = (float) ((double) m11 * (double) num1 - (double) m21 * (double) num2 + (double) m31 * (double) num3);
- float num8 = (float) -((double) m01 * (double) num1 - (double) m21 * (double) num4 + (double) m31 * (double) num5);
- float num9 = (float) ((double) m01 * (double) num2 - (double) m11 * (double) num4 + (double) m31 * (double) num6);
- float num10 = (float) -((double) m01 * (double) num3 - (double) m11 * (double) num5 + (double) m21 * (double) num6);
- float num11 = (float) (1.0 / ((double) m00 * (double) num7 + (double) m10 * (double) num8 + (double) m20 * (double) num9 +
- (double) m30 * (double) num10));
- result.m00 = num7 * num11;
- result.m01 = num8 * num11;
- result.m02 = num9 * num11;
- result.m03 = num10 * num11;
- result.m10 = (float) -((double) m10 * (double) num1 - (double) m20 * (double) num2 + (double) m30 * (double) num3) * num11;
- result.m11 = (float) ((double) m00 * (double) num1 - (double) m20 * (double) num4 + (double) m30 * (double) num5) * num11;
- result.m12 = (float) -((double) m00 * (double) num2 - (double) m10 * (double) num4 + (double) m30 * (double) num6) * num11;
- result.m13 = (float) ((double) m00 * (double) num3 - (double) m10 * (double) num5 + (double) m20 * (double) num6) * num11;
- float num12 = (float) ((double) m21 * (double) m33 - (double) m31 * (double) m23);
- float num13 = (float) ((double) m11 * (double) m33 - (double) m31 * (double) m13);
- float num14 = (float) ((double) m11 * (double) m23 - (double) m21 * (double) m13);
- float num15 = (float) ((double) m01 * (double) m33 - (double) m31 * (double) m03);
- float num16 = (float) ((double) m01 * (double) m23 - (double) m21 * (double) m03);
- float num17 = (float) ((double) m01 * (double) m13 - (double) m11 * (double) m03);
- result.m20 = (float) ((double) m10 * (double) num12 - (double) m20 * (double) num13 + (double) m30 * (double) num14) * num11;
- result.m21 = (float) -((double) m00 * (double) num12 - (double) m20 * (double) num15 + (double) m30 * (double) num16) * num11;
- result.m22 = (float) ((double) m00 * (double) num13 - (double) m10 * (double) num15 + (double) m30 * (double) num17) * num11;
- result.m23 = (float) -((double) m00 * (double) num14 - (double) m10 * (double) num16 + (double) m20 * (double) num17) * num11;
- float num18 = (float) ((double) m21 * (double) m32 - (double) m31 * (double) m22);
- float num19 = (float) ((double) m11 * (double) m32 - (double) m31 * (double) m12);
- float num20 = (float) ((double) m11 * (double) m22 - (double) m21 * (double) m12);
- float num21 = (float) ((double) m01 * (double) m32 - (double) m31 * (double) m02);
- float num22 = (float) ((double) m01 * (double) m22 - (double) m21 * (double) m02);
- float num23 = (float) ((double) m01 * (double) m12 - (double) m11 * (double) m02);
- result.m30 = (float) -((double) m10 * (double) num18 - (double) m20 * (double) num19 + (double) m30 * (double) num20) * num11;
- result.m31 = (float) ((double) m00 * (double) num18 - (double) m20 * (double) num21 + (double) m30 * (double) num22) * num11;
- result.m32 = (float) -((double) m00 * (double) num19 - (double) m10 * (double) num21 + (double) m30 * (double) num23) * num11;
- result.m33 = (float) ((double) m00 * (double) num20 - (double) m10 * (double) num22 + (double) m20 * (double) num23) * num11;
- }
- public static Matrix4x4 Add(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = matrix1.m00 + matrix2.m00;
- matrix44.m01 = matrix1.m01 + matrix2.m01;
- matrix44.m02 = matrix1.m02 + matrix2.m02;
- matrix44.m03 = matrix1.m03 + matrix2.m03;
- matrix44.m10 = matrix1.m10 + matrix2.m10;
- matrix44.m11 = matrix1.m11 + matrix2.m11;
- matrix44.m12 = matrix1.m12 + matrix2.m12;
- matrix44.m13 = matrix1.m13 + matrix2.m13;
- matrix44.m20 = matrix1.m20 + matrix2.m20;
- matrix44.m21 = matrix1.m21 + matrix2.m21;
- matrix44.m22 = matrix1.m22 + matrix2.m22;
- matrix44.m23 = matrix1.m23 + matrix2.m23;
- matrix44.m30 = matrix1.m30 + matrix2.m30;
- matrix44.m31 = matrix1.m31 + matrix2.m31;
- matrix44.m32 = matrix1.m32 + matrix2.m32;
- matrix44.m33 = matrix1.m33 + matrix2.m33;
- return matrix44;
- }
- public static void Add(ref Matrix4x4 matrix1, ref Matrix4x4 matrix2, out Matrix4x4 result)
- {
- result.m00 = matrix1.m00 + matrix2.m00;
- result.m01 = matrix1.m01 + matrix2.m01;
- result.m02 = matrix1.m02 + matrix2.m02;
- result.m03 = matrix1.m03 + matrix2.m03;
- result.m10 = matrix1.m10 + matrix2.m10;
- result.m11 = matrix1.m11 + matrix2.m11;
- result.m12 = matrix1.m12 + matrix2.m12;
- result.m13 = matrix1.m13 + matrix2.m13;
- result.m20 = matrix1.m20 + matrix2.m20;
- result.m21 = matrix1.m21 + matrix2.m21;
- result.m22 = matrix1.m22 + matrix2.m22;
- result.m23 = matrix1.m23 + matrix2.m23;
- result.m30 = matrix1.m30 + matrix2.m30;
- result.m31 = matrix1.m31 + matrix2.m31;
- result.m32 = matrix1.m32 + matrix2.m32;
- result.m33 = matrix1.m33 + matrix2.m33;
- }
- public static Matrix4x4 Sub(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = matrix1.m00 - matrix2.m00;
- matrix44.m01 = matrix1.m01 - matrix2.m01;
- matrix44.m02 = matrix1.m02 - matrix2.m02;
- matrix44.m03 = matrix1.m03 - matrix2.m03;
- matrix44.m10 = matrix1.m10 - matrix2.m10;
- matrix44.m11 = matrix1.m11 - matrix2.m11;
- matrix44.m12 = matrix1.m12 - matrix2.m12;
- matrix44.m13 = matrix1.m13 - matrix2.m13;
- matrix44.m20 = matrix1.m20 - matrix2.m20;
- matrix44.m21 = matrix1.m21 - matrix2.m21;
- matrix44.m22 = matrix1.m22 - matrix2.m22;
- matrix44.m23 = matrix1.m23 - matrix2.m23;
- matrix44.m30 = matrix1.m30 - matrix2.m30;
- matrix44.m31 = matrix1.m31 - matrix2.m31;
- matrix44.m32 = matrix1.m32 - matrix2.m32;
- matrix44.m33 = matrix1.m33 - matrix2.m33;
- return matrix44;
- }
- public static void Sub(ref Matrix4x4 matrix1, ref Matrix4x4 matrix2, out Matrix4x4 result)
- {
- result.m00 = matrix1.m00 - matrix2.m00;
- result.m01 = matrix1.m01 - matrix2.m01;
- result.m02 = matrix1.m02 - matrix2.m02;
- result.m03 = matrix1.m03 - matrix2.m03;
- result.m10 = matrix1.m10 - matrix2.m10;
- result.m11 = matrix1.m11 - matrix2.m11;
- result.m12 = matrix1.m12 - matrix2.m12;
- result.m13 = matrix1.m13 - matrix2.m13;
- result.m20 = matrix1.m20 - matrix2.m20;
- result.m21 = matrix1.m21 - matrix2.m21;
- result.m22 = matrix1.m22 - matrix2.m22;
- result.m23 = matrix1.m23 - matrix2.m23;
- result.m30 = matrix1.m30 - matrix2.m30;
- result.m31 = matrix1.m31 - matrix2.m31;
- result.m32 = matrix1.m32 - matrix2.m32;
- result.m33 = matrix1.m33 - matrix2.m33;
- }
- public static Matrix4x4 Multiply(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = (float) ((double) matrix1.m00 * (double) matrix2.m00 + (double) matrix1.m01 * (double) matrix2.m10 +
- (double) matrix1.m02 * (double) matrix2.m20 + (double) matrix1.m03 * (double) matrix2.m30);
- matrix44.m01 = (float) ((double) matrix1.m00 * (double) matrix2.m01 + (double) matrix1.m01 * (double) matrix2.m11 +
- (double) matrix1.m02 * (double) matrix2.m21 + (double) matrix1.m03 * (double) matrix2.m31);
- matrix44.m02 = (float) ((double) matrix1.m00 * (double) matrix2.m02 + (double) matrix1.m01 * (double) matrix2.m12 +
- (double) matrix1.m02 * (double) matrix2.m22 + (double) matrix1.m03 * (double) matrix2.m32);
- matrix44.m03 = (float) ((double) matrix1.m00 * (double) matrix2.m03 + (double) matrix1.m01 * (double) matrix2.m13 +
- (double) matrix1.m02 * (double) matrix2.m23 + (double) matrix1.m03 * (double) matrix2.m33);
- matrix44.m10 = (float) ((double) matrix1.m10 * (double) matrix2.m00 + (double) matrix1.m11 * (double) matrix2.m10 +
- (double) matrix1.m12 * (double) matrix2.m20 + (double) matrix1.m13 * (double) matrix2.m30);
- matrix44.m11 = (float) ((double) matrix1.m10 * (double) matrix2.m01 + (double) matrix1.m11 * (double) matrix2.m11 +
- (double) matrix1.m12 * (double) matrix2.m21 + (double) matrix1.m13 * (double) matrix2.m31);
- matrix44.m12 = (float) ((double) matrix1.m10 * (double) matrix2.m02 + (double) matrix1.m11 * (double) matrix2.m12 +
- (double) matrix1.m12 * (double) matrix2.m22 + (double) matrix1.m13 * (double) matrix2.m32);
- matrix44.m13 = (float) ((double) matrix1.m10 * (double) matrix2.m03 + (double) matrix1.m11 * (double) matrix2.m13 +
- (double) matrix1.m12 * (double) matrix2.m23 + (double) matrix1.m13 * (double) matrix2.m33);
- matrix44.m20 = (float) ((double) matrix1.m20 * (double) matrix2.m00 + (double) matrix1.m21 * (double) matrix2.m10 +
- (double) matrix1.m22 * (double) matrix2.m20 + (double) matrix1.m23 * (double) matrix2.m30);
- matrix44.m21 = (float) ((double) matrix1.m20 * (double) matrix2.m01 + (double) matrix1.m21 * (double) matrix2.m11 +
- (double) matrix1.m22 * (double) matrix2.m21 + (double) matrix1.m23 * (double) matrix2.m31);
- matrix44.m22 = (float) ((double) matrix1.m20 * (double) matrix2.m02 + (double) matrix1.m21 * (double) matrix2.m12 +
- (double) matrix1.m22 * (double) matrix2.m22 + (double) matrix1.m23 * (double) matrix2.m32);
- matrix44.m23 = (float) ((double) matrix1.m20 * (double) matrix2.m03 + (double) matrix1.m21 * (double) matrix2.m13 +
- (double) matrix1.m22 * (double) matrix2.m23 + (double) matrix1.m23 * (double) matrix2.m33);
- matrix44.m30 = (float) ((double) matrix1.m30 * (double) matrix2.m00 + (double) matrix1.m31 * (double) matrix2.m10 +
- (double) matrix1.m32 * (double) matrix2.m20 + (double) matrix1.m33 * (double) matrix2.m30);
- matrix44.m31 = (float) ((double) matrix1.m30 * (double) matrix2.m01 + (double) matrix1.m31 * (double) matrix2.m11 +
- (double) matrix1.m32 * (double) matrix2.m21 + (double) matrix1.m33 * (double) matrix2.m31);
- matrix44.m32 = (float) ((double) matrix1.m30 * (double) matrix2.m02 + (double) matrix1.m31 * (double) matrix2.m12 +
- (double) matrix1.m32 * (double) matrix2.m22 + (double) matrix1.m33 * (double) matrix2.m32);
- matrix44.m33 = (float) ((double) matrix1.m30 * (double) matrix2.m03 + (double) matrix1.m31 * (double) matrix2.m13 +
- (double) matrix1.m32 * (double) matrix2.m23 + (double) matrix1.m33 * (double) matrix2.m33);
- return matrix44;
- }
- public static void Multiply(ref Matrix4x4 matrix1, ref Matrix4x4 matrix2, out Matrix4x4 result)
- {
- float num1 = (float) ((double) matrix1.m00 * (double) matrix2.m00 + (double) matrix1.m01 * (double) matrix2.m10 +
- (double) matrix1.m02 * (double) matrix2.m20 + (double) matrix1.m03 * (double) matrix2.m30);
- float num2 = (float) ((double) matrix1.m00 * (double) matrix2.m01 + (double) matrix1.m01 * (double) matrix2.m11 +
- (double) matrix1.m02 * (double) matrix2.m21 + (double) matrix1.m03 * (double) matrix2.m31);
- float num3 = (float) ((double) matrix1.m00 * (double) matrix2.m02 + (double) matrix1.m01 * (double) matrix2.m12 +
- (double) matrix1.m02 * (double) matrix2.m22 + (double) matrix1.m03 * (double) matrix2.m32);
- float num4 = (float) ((double) matrix1.m00 * (double) matrix2.m03 + (double) matrix1.m01 * (double) matrix2.m13 +
- (double) matrix1.m02 * (double) matrix2.m23 + (double) matrix1.m03 * (double) matrix2.m33);
- float num5 = (float) ((double) matrix1.m10 * (double) matrix2.m00 + (double) matrix1.m11 * (double) matrix2.m10 +
- (double) matrix1.m12 * (double) matrix2.m20 + (double) matrix1.m13 * (double) matrix2.m30);
- float num6 = (float) ((double) matrix1.m10 * (double) matrix2.m01 + (double) matrix1.m11 * (double) matrix2.m11 +
- (double) matrix1.m12 * (double) matrix2.m21 + (double) matrix1.m13 * (double) matrix2.m31);
- float num7 = (float) ((double) matrix1.m10 * (double) matrix2.m02 + (double) matrix1.m11 * (double) matrix2.m12 +
- (double) matrix1.m12 * (double) matrix2.m22 + (double) matrix1.m13 * (double) matrix2.m32);
- float num8 = (float) ((double) matrix1.m10 * (double) matrix2.m03 + (double) matrix1.m11 * (double) matrix2.m13 +
- (double) matrix1.m12 * (double) matrix2.m23 + (double) matrix1.m13 * (double) matrix2.m33);
- float num9 = (float) ((double) matrix1.m20 * (double) matrix2.m00 + (double) matrix1.m21 * (double) matrix2.m10 +
- (double) matrix1.m22 * (double) matrix2.m20 + (double) matrix1.m23 * (double) matrix2.m30);
- float num10 = (float) ((double) matrix1.m20 * (double) matrix2.m01 + (double) matrix1.m21 * (double) matrix2.m11 +
- (double) matrix1.m22 * (double) matrix2.m21 + (double) matrix1.m23 * (double) matrix2.m31);
- float num11 = (float) ((double) matrix1.m20 * (double) matrix2.m02 + (double) matrix1.m21 * (double) matrix2.m12 +
- (double) matrix1.m22 * (double) matrix2.m22 + (double) matrix1.m23 * (double) matrix2.m32);
- float num12 = (float) ((double) matrix1.m20 * (double) matrix2.m03 + (double) matrix1.m21 * (double) matrix2.m13 +
- (double) matrix1.m22 * (double) matrix2.m23 + (double) matrix1.m23 * (double) matrix2.m33);
- float num13 = (float) ((double) matrix1.m30 * (double) matrix2.m00 + (double) matrix1.m31 * (double) matrix2.m10 +
- (double) matrix1.m32 * (double) matrix2.m20 + (double) matrix1.m33 * (double) matrix2.m30);
- float num14 = (float) ((double) matrix1.m30 * (double) matrix2.m01 + (double) matrix1.m31 * (double) matrix2.m11 +
- (double) matrix1.m32 * (double) matrix2.m21 + (double) matrix1.m33 * (double) matrix2.m31);
- float num15 = (float) ((double) matrix1.m30 * (double) matrix2.m02 + (double) matrix1.m31 * (double) matrix2.m12 +
- (double) matrix1.m32 * (double) matrix2.m22 + (double) matrix1.m33 * (double) matrix2.m32);
- float num16 = (float) ((double) matrix1.m30 * (double) matrix2.m03 + (double) matrix1.m31 * (double) matrix2.m13 +
- (double) matrix1.m32 * (double) matrix2.m23 + (double) matrix1.m33 * (double) matrix2.m33);
- result.m00 = num1;
- result.m01 = num2;
- result.m02 = num3;
- result.m03 = num4;
- result.m10 = num5;
- result.m11 = num6;
- result.m12 = num7;
- result.m13 = num8;
- result.m20 = num9;
- result.m21 = num10;
- result.m22 = num11;
- result.m23 = num12;
- result.m30 = num13;
- result.m31 = num14;
- result.m32 = num15;
- result.m33 = num16;
- }
- public static Vector4 TransformVector4(Matrix4x4 matrix, Vector4 vector)
- {
- float num1 = (float) ((double) vector.x * (double) matrix.m00 + (double) vector.y * (double) matrix.m01 +
- (double) vector.z * (double) matrix.m02 + (double) vector.w * (double) matrix.m03);
- float num2 = (float) ((double) vector.x * (double) matrix.m10 + (double) vector.y * (double) matrix.m11 +
- (double) vector.z * (double) matrix.m12 + (double) vector.w * (double) matrix.m13);
- float num3 = (float) ((double) vector.x * (double) matrix.m20 + (double) vector.y * (double) matrix.m21 +
- (double) vector.z * (double) matrix.m22 + (double) vector.w * (double) matrix.m23);
- float num4 = (float) ((double) vector.x * (double) matrix.m30 + (double) vector.y * (double) matrix.m31 +
- (double) vector.z * (double) matrix.m32 + (double) vector.w * (double) matrix.m33);
- Vector4 vector4;
- vector4.x = num1;
- vector4.y = num2;
- vector4.z = num3;
- vector4.w = num4;
- return vector4;
- }
- public static void TransformVector4(ref Matrix4x4 matrix, ref Vector4 vector, out Vector4 result)
- {
- float num1 = (float) ((double) vector.x * (double) matrix.m00 + (double) vector.y * (double) matrix.m01 +
- (double) vector.z * (double) matrix.m02 + (double) vector.w * (double) matrix.m03);
- float num2 = (float) ((double) vector.x * (double) matrix.m10 + (double) vector.y * (double) matrix.m11 +
- (double) vector.z * (double) matrix.m12 + (double) vector.w * (double) matrix.m13);
- float num3 = (float) ((double) vector.x * (double) matrix.m20 + (double) vector.y * (double) matrix.m21 +
- (double) vector.z * (double) matrix.m22 + (double) vector.w * (double) matrix.m23);
- float num4 = (float) ((double) vector.x * (double) matrix.m30 + (double) vector.y * (double) matrix.m31 +
- (double) vector.z * (double) matrix.m32 + (double) vector.w * (double) matrix.m33);
- result.x = num1;
- result.y = num2;
- result.z = num3;
- result.w = num4;
- }
- public static Vector3 TransformPosition(Matrix4x4 matrix, Vector3 position)
- {
- float num1 = (float) ((double) position.x * (double) matrix.m00 + (double) position.y * (double) matrix.m01 +
- (double) position.z * (double) matrix.m02) + matrix.m03;
- float num2 = (float) ((double) position.x * (double) matrix.m10 + (double) position.y * (double) matrix.m11 +
- (double) position.z * (double) matrix.m12) + matrix.m13;
- float num3 = (float) ((double) position.x * (double) matrix.m20 + (double) position.y * (double) matrix.m21 +
- (double) position.z * (double) matrix.m22) + matrix.m23;
- Vector3 vector3;
- vector3.x = num1;
- vector3.y = num2;
- vector3.z = num3;
- return vector3;
- }
- public static void TransformPosition(ref Matrix4x4 matrix, ref Vector3 position, out Vector3 result)
- {
- float num1 = (float) ((double) position.x * (double) matrix.m00 + (double) position.y * (double) matrix.m01 +
- (double) position.z * (double) matrix.m02) + matrix.m03;
- float num2 = (float) ((double) position.x * (double) matrix.m10 + (double) position.y * (double) matrix.m11 +
- (double) position.z * (double) matrix.m12) + matrix.m13;
- float num3 = (float) ((double) position.x * (double) matrix.m20 + (double) position.y * (double) matrix.m21 +
- (double) position.z * (double) matrix.m22) + matrix.m23;
- result.x = num1;
- result.y = num2;
- result.z = num3;
- }
-
- public Vector3 MultiplyPoint3x4(Vector3 point)
- {
- return TransformPosition(this, point);
- }
- public Vector3 MultiplyVector(Vector3 vector)
- {
- return TransformDirection(this, vector);
- }
- public static Vector3 TransformDirection(Matrix4x4 matrix, Vector3 direction)
- {
- float num1 = (float) ((double) direction.x * (double) matrix.m00 + (double) direction.y * (double) matrix.m01 +
- (double) direction.z * (double) matrix.m02);
- float num2 = (float) ((double) direction.x * (double) matrix.m10 + (double) direction.y * (double) matrix.m11 +
- (double) direction.z * (double) matrix.m12);
- float num3 = (float) ((double) direction.x * (double) matrix.m20 + (double) direction.y * (double) matrix.m21 +
- (double) direction.z * (double) matrix.m22);
- Vector3 vector3;
- vector3.x = num1;
- vector3.y = num2;
- vector3.z = num3;
- return vector3;
- }
- public static void TransformDirection(ref Matrix4x4 matrix, ref Vector3 direction, out Vector3 result)
- {
- float num1 = (float) ((double) direction.x * (double) matrix.m00 + (double) direction.y * (double) matrix.m01 +
- (double) direction.z * (double) matrix.m02);
- float num2 = (float) ((double) direction.x * (double) matrix.m10 + (double) direction.y * (double) matrix.m11 +
- (double) direction.z * (double) matrix.m12);
- float num3 = (float) ((double) direction.x * (double) matrix.m20 + (double) direction.y * (double) matrix.m21 +
- (double) direction.z * (double) matrix.m22);
- result.x = num1;
- result.y = num2;
- result.z = num3;
- }
- public static Matrix4x4 operator -(Matrix4x4 matrix1)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = -matrix1.m00;
- matrix44.m01 = -matrix1.m01;
- matrix44.m02 = -matrix1.m02;
- matrix44.m03 = -matrix1.m03;
- matrix44.m10 = -matrix1.m10;
- matrix44.m11 = -matrix1.m11;
- matrix44.m12 = -matrix1.m12;
- matrix44.m13 = -matrix1.m13;
- matrix44.m20 = -matrix1.m20;
- matrix44.m21 = -matrix1.m21;
- matrix44.m22 = -matrix1.m22;
- matrix44.m23 = -matrix1.m23;
- matrix44.m30 = -matrix1.m30;
- matrix44.m31 = -matrix1.m31;
- matrix44.m32 = -matrix1.m32;
- matrix44.m33 = -matrix1.m33;
- return matrix44;
- }
- public static bool operator ==(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- if ((double) matrix1.m00 == (double) matrix2.m00 && (double) matrix1.m11 == (double) matrix2.m11 &&
- ((double) matrix1.m22 == (double) matrix2.m22 && (double) matrix1.m33 == (double) matrix2.m33) &&
- ((double) matrix1.m01 == (double) matrix2.m01 && (double) matrix1.m02 == (double) matrix2.m02 &&
- ((double) matrix1.m03 == (double) matrix2.m03 && (double) matrix1.m10 == (double) matrix2.m10)) &&
- ((double) matrix1.m12 == (double) matrix2.m12 && (double) matrix1.m13 == (double) matrix2.m13 &&
- ((double) matrix1.m20 == (double) matrix2.m20 && (double) matrix1.m21 == (double) matrix2.m21) &&
- ((double) matrix1.m23 == (double) matrix2.m23 && (double) matrix1.m30 == (double) matrix2.m30 &&
- (double) matrix1.m31 == (double) matrix2.m31)))
- return (double) matrix1.m32 == (double) matrix2.m32;
- return false;
- }
- public static bool operator !=(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- if ((double) matrix1.m00 == (double) matrix2.m00 && (double) matrix1.m01 == (double) matrix2.m01 &&
- ((double) matrix1.m02 == (double) matrix2.m02 && (double) matrix1.m03 == (double) matrix2.m03) &&
- ((double) matrix1.m10 == (double) matrix2.m10 && (double) matrix1.m11 == (double) matrix2.m11 &&
- ((double) matrix1.m12 == (double) matrix2.m12 && (double) matrix1.m13 == (double) matrix2.m13)) &&
- ((double) matrix1.m20 == (double) matrix2.m20 && (double) matrix1.m21 == (double) matrix2.m21 &&
- ((double) matrix1.m22 == (double) matrix2.m22 && (double) matrix1.m23 == (double) matrix2.m23) &&
- ((double) matrix1.m30 == (double) matrix2.m30 && (double) matrix1.m31 == (double) matrix2.m31 &&
- (double) matrix1.m32 == (double) matrix2.m32)))
- return (double) matrix1.m33 != (double) matrix2.m33;
- return true;
- }
- public static Matrix4x4 operator +(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = matrix1.m00 + matrix2.m00;
- matrix44.m01 = matrix1.m01 + matrix2.m01;
- matrix44.m02 = matrix1.m02 + matrix2.m02;
- matrix44.m03 = matrix1.m03 + matrix2.m03;
- matrix44.m10 = matrix1.m10 + matrix2.m10;
- matrix44.m11 = matrix1.m11 + matrix2.m11;
- matrix44.m12 = matrix1.m12 + matrix2.m12;
- matrix44.m13 = matrix1.m13 + matrix2.m13;
- matrix44.m20 = matrix1.m20 + matrix2.m20;
- matrix44.m21 = matrix1.m21 + matrix2.m21;
- matrix44.m22 = matrix1.m22 + matrix2.m22;
- matrix44.m23 = matrix1.m23 + matrix2.m23;
- matrix44.m30 = matrix1.m30 + matrix2.m30;
- matrix44.m31 = matrix1.m31 + matrix2.m31;
- matrix44.m32 = matrix1.m32 + matrix2.m32;
- matrix44.m33 = matrix1.m33 + matrix2.m33;
- return matrix44;
- }
- public static Matrix4x4 operator -(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = matrix1.m00 - matrix2.m00;
- matrix44.m01 = matrix1.m01 - matrix2.m01;
- matrix44.m02 = matrix1.m02 - matrix2.m02;
- matrix44.m03 = matrix1.m03 - matrix2.m03;
- matrix44.m10 = matrix1.m10 - matrix2.m10;
- matrix44.m11 = matrix1.m11 - matrix2.m11;
- matrix44.m12 = matrix1.m12 - matrix2.m12;
- matrix44.m13 = matrix1.m13 - matrix2.m13;
- matrix44.m20 = matrix1.m20 - matrix2.m20;
- matrix44.m21 = matrix1.m21 - matrix2.m21;
- matrix44.m22 = matrix1.m22 - matrix2.m22;
- matrix44.m23 = matrix1.m23 - matrix2.m23;
- matrix44.m30 = matrix1.m30 - matrix2.m30;
- matrix44.m31 = matrix1.m31 - matrix2.m31;
- matrix44.m32 = matrix1.m32 - matrix2.m32;
- matrix44.m33 = matrix1.m33 - matrix2.m33;
- return matrix44;
- }
- public static Matrix4x4 operator *(Matrix4x4 matrix1, Matrix4x4 matrix2)
- {
- Matrix4x4 matrix44;
- matrix44.m00 = (float) ((double) matrix1.m00 * (double) matrix2.m00 + (double) matrix1.m01 * (double) matrix2.m10 +
- (double) matrix1.m02 * (double) matrix2.m20 + (double) matrix1.m03 * (double) matrix2.m30);
- matrix44.m01 = (float) ((double) matrix1.m00 * (double) matrix2.m01 + (double) matrix1.m01 * (double) matrix2.m11 +
- (double) matrix1.m02 * (double) matrix2.m21 + (double) matrix1.m03 * (double) matrix2.m31);
- matrix44.m02 = (float) ((double) matrix1.m00 * (double) matrix2.m02 + (double) matrix1.m01 * (double) matrix2.m12 +
- (double) matrix1.m02 * (double) matrix2.m22 + (double) matrix1.m03 * (double) matrix2.m32);
- matrix44.m03 = (float) ((double) matrix1.m00 * (double) matrix2.m03 + (double) matrix1.m01 * (double) matrix2.m13 +
- (double) matrix1.m02 * (double) matrix2.m23 + (double) matrix1.m03 * (double) matrix2.m33);
- matrix44.m10 = (float) ((double) matrix1.m10 * (double) matrix2.m00 + (double) matrix1.m11 * (double) matrix2.m10 +
- (double) matrix1.m12 * (double) matrix2.m20 + (double) matrix1.m13 * (double) matrix2.m30);
- matrix44.m11 = (float) ((double) matrix1.m10 * (double) matrix2.m01 + (double) matrix1.m11 * (double) matrix2.m11 +
- (double) matrix1.m12 * (double) matrix2.m21 + (double) matrix1.m13 * (double) matrix2.m31);
- matrix44.m12 = (float) ((double) matrix1.m10 * (double) matrix2.m02 + (double) matrix1.m11 * (double) matrix2.m12 +
- (double) matrix1.m12 * (double) matrix2.m22 + (double) matrix1.m13 * (double) matrix2.m32);
- matrix44.m13 = (float) ((double) matrix1.m10 * (double) matrix2.m03 + (double) matrix1.m11 * (double) matrix2.m13 +
- (double) matrix1.m12 * (double) matrix2.m23 + (double) matrix1.m13 * (double) matrix2.m33);
- matrix44.m20 = (float) ((double) matrix1.m20 * (double) matrix2.m00 + (double) matrix1.m21 * (double) matrix2.m10 +
- (double) matrix1.m22 * (double) matrix2.m20 + (double) matrix1.m23 * (double) matrix2.m30);
- matrix44.m21 = (float) ((double) matrix1.m20 * (double) matrix2.m01 + (double) matrix1.m21 * (double) matrix2.m11 +
- (double) matrix1.m22 * (double) matrix2.m21 + (double) matrix1.m23 * (double) matrix2.m31);
- matrix44.m22 = (float) ((double) matrix1.m20 * (double) matrix2.m02 + (double) matrix1.m21 * (double) matrix2.m12 +
- (double) matrix1.m22 * (double) matrix2.m22 + (double) matrix1.m23 * (double) matrix2.m32);
- matrix44.m23 = (float) ((double) matrix1.m20 * (double) matrix2.m03 + (double) matrix1.m21 * (double) matrix2.m13 +
- (double) matrix1.m22 * (double) matrix2.m23 + (double) matrix1.m23 * (double) matrix2.m33);
- matrix44.m30 = (float) ((double) matrix1.m30 * (double) matrix2.m00 + (double) matrix1.m31 * (double) matrix2.m10 +
- (double) matrix1.m32 * (double) matrix2.m20 + (double) matrix1.m33 * (double) matrix2.m30);
- matrix44.m31 = (float) ((double) matrix1.m30 * (double) matrix2.m01 + (double) matrix1.m31 * (double) matrix2.m11 +
- (double) matrix1.m32 * (double) matrix2.m21 + (double) matrix1.m33 * (double) matrix2.m31);
- matrix44.m32 = (float) ((double) matrix1.m30 * (double) matrix2.m02 + (double) matrix1.m31 * (double) matrix2.m12 +
- (double) matrix1.m32 * (double) matrix2.m22 + (double) matrix1.m33 * (double) matrix2.m32);
- matrix44.m33 = (float) ((double) matrix1.m30 * (double) matrix2.m03 + (double) matrix1.m31 * (double) matrix2.m13 +
- (double) matrix1.m32 * (double) matrix2.m23 + (double) matrix1.m33 * (double) matrix2.m33);
- return matrix44;
- }
- }
- }
|