Удаление избыточных методов и реорганизация библиотеки / Removing of extra methods and reorganization of the library

This commit is contained in:
Andrey Pokidov 2024-11-15 19:11:49 +07:00
parent 301cabe8de
commit c38c5ac857
14 changed files with 969 additions and 1583 deletions

View file

@ -104,51 +104,6 @@ namespace Geometry
return -SPUtility.EPSYLON <= determinant && determinant <= SPUtility.EPSYLON;
}
public void Reset()
{
this.r1c1 = 0.0f;
this.r1c2 = 0.0f;
this.r1c3 = 0.0f;
this.r2c1 = 0.0f;
this.r2c2 = 0.0f;
this.r2c3 = 0.0f;
this.r3c1 = 0.0f;
this.r3c2 = 0.0f;
this.r3c3 = 0.0f;
}
public void MakeIdentity()
{
this.r1c1 = 1.0f;
this.r1c2 = 0.0f;
this.r1c3 = 0.0f;
this.r2c1 = 0.0f;
this.r2c2 = 1.0f;
this.r2c3 = 0.0f;
this.r3c1 = 0.0f;
this.r3c2 = 0.0f;
this.r3c3 = 1.0f;
}
public void MakeDiagonal(float d1, float d2, float d3)
{
this.r1c1 = d1;
this.r1c2 = 0.0f;
this.r1c3 = 0.0f;
this.r2c1 = 0.0f;
this.r2c2 = d2;
this.r2c3 = 0.0f;
this.r2c1 = 0.0f;
this.r2c2 = 0.0f;
this.r2c3 = d3;
}
public void Transpose()
{
(this.r1c2, this.r2c1) = (this.r2c1, this.r1c2);
@ -191,65 +146,49 @@ namespace Geometry
return true;
}
public void MakeTransposedOf(in SPMatrix3x3 matrix)
public void Reset()
{
this.r1c1 = matrix.r1c1;
this.r2c2 = matrix.r2c2;
this.r3c3 = matrix.r3c3;
this.r1c1 = 0.0f;
this.r1c2 = 0.0f;
this.r1c3 = 0.0f;
(this.r1c2, this.r2c1) = (matrix.r2c1, matrix.r1c2);
(this.r1c3, this.r3c1) = (matrix.r3c1, matrix.r1c3);
(this.r2c3, this.r3c2) = (matrix.r3c2, matrix.r2c3);
this.r2c1 = 0.0f;
this.r2c2 = 0.0f;
this.r2c3 = 0.0f;
this.r3c1 = 0.0f;
this.r3c2 = 0.0f;
this.r3c3 = 0.0f;
}
public void MakeTransposedOf(in DPMatrix3x3 matrix)
public void SetToIdentity()
{
this.r1c1 = (float)matrix.r1c1;
this.r1c2 = (float)matrix.r2c1;
this.r1c3 = (float)matrix.r3c1;
this.r1c1 = 1.0f;
this.r1c2 = 0.0f;
this.r1c3 = 0.0f;
this.r2c1 = (float)matrix.r1c2;
this.r2c2 = (float)matrix.r2c2;
this.r2c3 = (float)matrix.r3c2;
this.r2c1 = 0.0f;
this.r2c2 = 1.0f;
this.r2c3 = 0.0f;
this.r3c1 = (float)matrix.r1c3;
this.r3c2 = (float)matrix.r2c3;
this.r3c3 = (float)matrix.r3c3;
this.r3c1 = 0.0f;
this.r3c2 = 0.0f;
this.r3c3 = 1.0f;
}
public bool MakeInvertedOf(in SPMatrix3x3 matrix)
public void SetToDiagonal(float d1, float d2, float d3)
{
float determinant = matrix.GetDeterminant();
if (-SPUtility.EPSYLON <= determinant && determinant <= SPUtility.EPSYLON) {
return false;
}
this.r1c1 = d1;
this.r1c2 = 0.0f;
this.r1c3 = 0.0f;
float r1c1 = matrix.r2c2 * matrix.r3c3 - matrix.r2c3 * matrix.r3c2;
float r1c2 = matrix.r1c3 * matrix.r3c2 - matrix.r1c2 * matrix.r3c3;
float r1c3 = matrix.r1c2 * matrix.r2c3 - matrix.r1c3 * matrix.r2c2;
this.r2c1 = 0.0f;
this.r2c2 = d2;
this.r2c3 = 0.0f;
float r2c1 = matrix.r2c3 * matrix.r3c1 - matrix.r2c1 * matrix.r3c3;
float r2c2 = matrix.r1c1 * matrix.r3c3 - matrix.r1c3 * matrix.r3c1;
float r2c3 = matrix.r1c3 * matrix.r2c1 - matrix.r1c1 * matrix.r2c3;
float r3c1 = matrix.r2c1 * matrix.r3c2 - matrix.r2c2 * matrix.r3c1;
float r3c2 = matrix.r1c2 * matrix.r3c1 - matrix.r1c1 * matrix.r3c2;
float r3c3 = matrix.r1c1 * matrix.r2c2 - matrix.r1c2 * matrix.r2c1;
this.r1c1 = r1c1 / determinant;
this.r1c2 = r1c2 / determinant;
this.r1c3 = r1c3 / determinant;
this.r2c1 = r2c1 / determinant;
this.r2c2 = r2c2 / determinant;
this.r2c3 = r2c3 / determinant;
this.r3c1 = r3c1 / determinant;
this.r3c2 = r3c2 / determinant;
this.r3c3 = r3c3 / determinant;
return true;
this.r2c1 = 0.0f;
this.r2c2 = 0.0f;
this.r2c3 = d3;
}
public void SetValues(in SPMatrix3x3 matrix)
@ -282,11 +221,65 @@ namespace Geometry
this.r3c3 = (float)matrix.r3c3;
}
public void SetMainDiagonal(float d1, float d2, float d3)
public void SetTransposedOf(in SPMatrix3x3 matrix)
{
this.r1c1 = d1;
this.r2c2 = d2;
this.r3c3 = d3;
this.r1c1 = matrix.r1c1;
this.r2c2 = matrix.r2c2;
this.r3c3 = matrix.r3c3;
(this.r1c2, this.r2c1) = (matrix.r2c1, matrix.r1c2);
(this.r1c3, this.r3c1) = (matrix.r3c1, matrix.r1c3);
(this.r2c3, this.r3c2) = (matrix.r3c2, matrix.r2c3);
}
public void SetTransposedOf(in DPMatrix3x3 matrix)
{
this.r1c1 = (float)matrix.r1c1;
this.r1c2 = (float)matrix.r2c1;
this.r1c3 = (float)matrix.r3c1;
this.r2c1 = (float)matrix.r1c2;
this.r2c2 = (float)matrix.r2c2;
this.r2c3 = (float)matrix.r3c2;
this.r3c1 = (float)matrix.r1c3;
this.r3c2 = (float)matrix.r2c3;
this.r3c3 = (float)matrix.r3c3;
}
public bool SetInvertedOf(in SPMatrix3x3 matrix)
{
float determinant = matrix.GetDeterminant();
if (-SPUtility.EPSYLON <= determinant && determinant <= SPUtility.EPSYLON) {
return false;
}
float r1c1 = matrix.r2c2 * matrix.r3c3 - matrix.r2c3 * matrix.r3c2;
float r1c2 = matrix.r1c3 * matrix.r3c2 - matrix.r1c2 * matrix.r3c3;
float r1c3 = matrix.r1c2 * matrix.r2c3 - matrix.r1c3 * matrix.r2c2;
float r2c1 = matrix.r2c3 * matrix.r3c1 - matrix.r2c1 * matrix.r3c3;
float r2c2 = matrix.r1c1 * matrix.r3c3 - matrix.r1c3 * matrix.r3c1;
float r2c3 = matrix.r1c3 * matrix.r2c1 - matrix.r1c1 * matrix.r2c3;
float r3c1 = matrix.r2c1 * matrix.r3c2 - matrix.r2c2 * matrix.r3c1;
float r3c2 = matrix.r1c2 * matrix.r3c1 - matrix.r1c1 * matrix.r3c2;
float r3c3 = matrix.r1c1 * matrix.r2c2 - matrix.r1c2 * matrix.r2c1;
this.r1c1 = r1c1 / determinant;
this.r1c2 = r1c2 / determinant;
this.r1c3 = r1c3 / determinant;
this.r2c1 = r2c1 / determinant;
this.r2c2 = r2c2 / determinant;
this.r2c3 = r2c3 / determinant;
this.r3c1 = r3c1 / determinant;
this.r3c2 = r3c2 / determinant;
this.r3c3 = r3c3 / determinant;
return true;
}
public void SetRow1(float c1, float c2, float c3)
@ -346,69 +339,6 @@ namespace Geometry
sum.r3c3 = matrix1.r3c3 + matrix2.r3c3;
}
public static void Add3(
in SPMatrix3x3 matrix1,
in SPMatrix3x3 matrix2,
in SPMatrix3x3 matrix3,
out SPMatrix3x3 sum
)
{
sum.r1c1 = matrix1.r1c1 + matrix2.r1c1 + matrix3.r1c1;
sum.r1c2 = matrix1.r1c2 + matrix2.r1c2 + matrix3.r1c2;
sum.r1c3 = matrix1.r1c3 + matrix2.r1c3 + matrix3.r1c3;
sum.r2c1 = matrix1.r2c1 + matrix2.r2c1 + matrix3.r2c1;
sum.r2c2 = matrix1.r2c2 + matrix2.r2c2 + matrix3.r2c2;
sum.r2c3 = matrix1.r2c3 + matrix2.r2c3 + matrix3.r2c3;
sum.r3c1 = matrix1.r3c1 + matrix2.r3c1 + matrix3.r3c1;
sum.r3c2 = matrix1.r3c2 + matrix2.r3c2 + matrix3.r3c2;
sum.r3c3 = matrix1.r3c3 + matrix2.r3c3 + matrix3.r3c3;
}
public static void Add4(
in SPMatrix3x3 matrix1,
in SPMatrix3x3 matrix2,
in SPMatrix3x3 matrix3,
in SPMatrix3x3 matrix4,
out SPMatrix3x3 sum
)
{
sum.r1c1 = (matrix1.r1c1 + matrix2.r1c1) + (matrix3.r1c1 + matrix4.r1c1);
sum.r1c2 = (matrix1.r1c2 + matrix2.r1c2) + (matrix3.r1c2 + matrix4.r1c2);
sum.r1c3 = (matrix1.r1c3 + matrix2.r1c3) + (matrix3.r1c3 + matrix4.r1c3);
sum.r2c1 = (matrix1.r2c1 + matrix2.r2c1) + (matrix3.r2c1 + matrix4.r2c1);
sum.r2c2 = (matrix1.r2c2 + matrix2.r2c2) + (matrix3.r2c2 + matrix4.r2c2);
sum.r2c3 = (matrix1.r2c3 + matrix2.r2c3) + (matrix3.r2c3 + matrix4.r2c3);
sum.r3c1 = (matrix1.r3c1 + matrix2.r3c1) + (matrix3.r3c1 + matrix4.r3c1);
sum.r3c2 = (matrix1.r3c2 + matrix2.r3c2) + (matrix3.r3c2 + matrix4.r3c2);
sum.r3c3 = (matrix1.r3c3 + matrix2.r3c3) + (matrix3.r3c3 + matrix4.r3c3);
}
public static void Add5(
in SPMatrix3x3 matrix1,
in SPMatrix3x3 matrix2,
in SPMatrix3x3 matrix3,
in SPMatrix3x3 matrix4,
in SPMatrix3x3 matrix5,
out SPMatrix3x3 sum
)
{
sum.r1c1 = (matrix1.r1c1 + matrix2.r1c1) + (matrix3.r1c1 + matrix4.r1c1) + matrix5.r1c1;
sum.r1c2 = (matrix1.r1c2 + matrix2.r1c2) + (matrix3.r1c2 + matrix4.r1c2) + matrix5.r1c2;
sum.r1c3 = (matrix1.r1c3 + matrix2.r1c3) + (matrix3.r1c3 + matrix4.r1c3) + matrix5.r1c3;
sum.r2c1 = (matrix1.r2c1 + matrix2.r2c1) + (matrix3.r2c1 + matrix4.r2c1) + matrix5.r2c1;
sum.r2c2 = (matrix1.r2c2 + matrix2.r2c2) + (matrix3.r2c2 + matrix4.r2c2) + matrix5.r2c2;
sum.r2c3 = (matrix1.r2c3 + matrix2.r2c3) + (matrix3.r2c3 + matrix4.r2c3) + matrix5.r2c3;
sum.r3c1 = (matrix1.r3c1 + matrix2.r3c1) + (matrix3.r3c1 + matrix4.r3c1) + matrix5.r3c1;
sum.r3c2 = (matrix1.r3c2 + matrix2.r3c2) + (matrix3.r3c2 + matrix4.r3c2) + matrix5.r3c2;
sum.r3c3 = (matrix1.r3c3 + matrix2.r3c3) + (matrix3.r3c3 + matrix4.r3c3) + matrix5.r3c3;
}
public static void Subtract(in SPMatrix3x3 minuend, in SPMatrix3x3 subtrahend, out SPMatrix3x3 difference)
{
difference.r1c1 = minuend.r1c1 - subtrahend.r1c1;
@ -424,88 +354,6 @@ namespace Geometry
difference.r3c3 = minuend.r3c3 - subtrahend.r3c3;
}
public static void GetWeightedSum2(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
out SPMatrix3x3 sum
)
{
sum.r1c1 = matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2;
sum.r1c2 = matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2;
sum.r1c3 = matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2;
sum.r2c1 = matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2;
sum.r2c2 = matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2;
sum.r2c3 = matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2;
sum.r3c1 = matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2;
sum.r3c2 = matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2;
sum.r3c3 = matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2;
}
public static void GetWeightedSum3(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
float weight3, in SPMatrix3x3 matrix3,
out SPMatrix3x3 sum
)
{
sum.r1c1 = matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2 + matrix3.r1c1 * weight3;
sum.r1c2 = matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2 + matrix3.r1c2 * weight3;
sum.r1c3 = matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2 + matrix3.r1c3 * weight3;
sum.r2c1 = matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2 + matrix3.r2c1 * weight3;
sum.r2c2 = matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2 + matrix3.r2c2 * weight3;
sum.r2c3 = matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2 + matrix3.r2c3 * weight3;
sum.r3c1 = matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2 + matrix3.r3c1 * weight3;
sum.r3c2 = matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2 + matrix3.r3c2 * weight3;
sum.r3c3 = matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2 + matrix3.r3c3 * weight3;
}
public static void GetWeightedSum4(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
float weight3, in SPMatrix3x3 matrix3,
float weight4, in SPMatrix3x3 matrix4,
out SPMatrix3x3 sum
)
{
sum.r1c1 = (matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2) + (matrix3.r1c1 * weight3 + matrix4.r1c1 * weight4);
sum.r1c2 = (matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2) + (matrix3.r1c2 * weight3 + matrix4.r1c2 * weight4);
sum.r1c3 = (matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2) + (matrix3.r1c3 * weight3 + matrix4.r1c3 * weight4);
sum.r2c1 = (matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2) + (matrix3.r2c1 * weight3 + matrix4.r2c1 * weight4);
sum.r2c2 = (matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2) + (matrix3.r2c2 * weight3 + matrix4.r2c2 * weight4);
sum.r2c3 = (matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2) + (matrix3.r2c3 * weight3 + matrix4.r2c3 * weight4);
sum.r3c1 = (matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2) + (matrix3.r3c1 * weight3 + matrix4.r3c1 * weight4);
sum.r3c2 = (matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2) + (matrix3.r3c2 * weight3 + matrix4.r3c2 * weight4);
sum.r3c3 = (matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2) + (matrix3.r3c3 * weight3 + matrix4.r3c3 * weight4);
}
public static void GetWeightedSum5(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
float weight3, in SPMatrix3x3 matrix3,
float weight4, in SPMatrix3x3 matrix4,
float weight5, in SPMatrix3x3 matrix5,
out SPMatrix3x3 sum
)
{
sum.r1c1 = (matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2) + (matrix3.r1c1 * weight3 + matrix4.r1c1 * weight4) + matrix5.r1c1 * weight5;
sum.r1c2 = (matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2) + (matrix3.r1c2 * weight3 + matrix4.r1c2 * weight4) + matrix5.r1c2 * weight5;
sum.r1c3 = (matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2) + (matrix3.r1c3 * weight3 + matrix4.r1c3 * weight4) + matrix5.r1c3 * weight5;
sum.r2c1 = (matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2) + (matrix3.r2c1 * weight3 + matrix4.r2c1 * weight4) + matrix5.r2c1 * weight5;
sum.r2c2 = (matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2) + (matrix3.r2c2 * weight3 + matrix4.r2c2 * weight4) + matrix5.r2c2 * weight5;
sum.r2c3 = (matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2) + (matrix3.r2c3 * weight3 + matrix4.r2c3 * weight4) + matrix5.r2c3 * weight5;
sum.r3c1 = (matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2) + (matrix3.r3c1 * weight3 + matrix4.r3c1 * weight4) + matrix5.r3c1 * weight5;
sum.r3c2 = (matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2) + (matrix3.r3c2 * weight3 + matrix4.r3c2 * weight4) + matrix5.r3c2 * weight5;
sum.r3c3 = (matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2) + (matrix3.r3c3 * weight3 + matrix4.r3c3 * weight4) + matrix5.r3c3 * weight5;
}
public static void Multiply(in SPMatrix3x3 multiplicand, float multiplier, out SPMatrix3x3 product)
{
product.r1c1 = multiplicand.r1c1 * multiplier;
@ -536,6 +384,84 @@ namespace Geometry
quotient.r3c3 = dividend.r3c3 / divisor;
}
public static void GetWeightedSum2(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
out SPMatrix3x3 sum)
{
sum.r1c1 = matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2;
sum.r1c2 = matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2;
sum.r1c3 = matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2;
sum.r2c1 = matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2;
sum.r2c2 = matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2;
sum.r2c3 = matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2;
sum.r3c1 = matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2;
sum.r3c2 = matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2;
sum.r3c3 = matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2;
}
public static void GetWeightedSum3(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
float weight3, in SPMatrix3x3 matrix3,
out SPMatrix3x3 sum)
{
sum.r1c1 = matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2 + matrix3.r1c1 * weight3;
sum.r1c2 = matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2 + matrix3.r1c2 * weight3;
sum.r1c3 = matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2 + matrix3.r1c3 * weight3;
sum.r2c1 = matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2 + matrix3.r2c1 * weight3;
sum.r2c2 = matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2 + matrix3.r2c2 * weight3;
sum.r2c3 = matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2 + matrix3.r2c3 * weight3;
sum.r3c1 = matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2 + matrix3.r3c1 * weight3;
sum.r3c2 = matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2 + matrix3.r3c2 * weight3;
sum.r3c3 = matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2 + matrix3.r3c3 * weight3;
}
public static void GetWeightedSum4(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
float weight3, in SPMatrix3x3 matrix3,
float weight4, in SPMatrix3x3 matrix4,
out SPMatrix3x3 sum)
{
sum.r1c1 = (matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2) + (matrix3.r1c1 * weight3 + matrix4.r1c1 * weight4);
sum.r1c2 = (matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2) + (matrix3.r1c2 * weight3 + matrix4.r1c2 * weight4);
sum.r1c3 = (matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2) + (matrix3.r1c3 * weight3 + matrix4.r1c3 * weight4);
sum.r2c1 = (matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2) + (matrix3.r2c1 * weight3 + matrix4.r2c1 * weight4);
sum.r2c2 = (matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2) + (matrix3.r2c2 * weight3 + matrix4.r2c2 * weight4);
sum.r2c3 = (matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2) + (matrix3.r2c3 * weight3 + matrix4.r2c3 * weight4);
sum.r3c1 = (matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2) + (matrix3.r3c1 * weight3 + matrix4.r3c1 * weight4);
sum.r3c2 = (matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2) + (matrix3.r3c2 * weight3 + matrix4.r3c2 * weight4);
sum.r3c3 = (matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2) + (matrix3.r3c3 * weight3 + matrix4.r3c3 * weight4);
}
public static void GetWeightedSum5(
float weight1, in SPMatrix3x3 matrix1,
float weight2, in SPMatrix3x3 matrix2,
float weight3, in SPMatrix3x3 matrix3,
float weight4, in SPMatrix3x3 matrix4,
float weight5, in SPMatrix3x3 matrix5,
out SPMatrix3x3 sum)
{
sum.r1c1 = (matrix1.r1c1 * weight1 + matrix2.r1c1 * weight2) + (matrix3.r1c1 * weight3 + matrix4.r1c1 * weight4) + matrix5.r1c1 * weight5;
sum.r1c2 = (matrix1.r1c2 * weight1 + matrix2.r1c2 * weight2) + (matrix3.r1c2 * weight3 + matrix4.r1c2 * weight4) + matrix5.r1c2 * weight5;
sum.r1c3 = (matrix1.r1c3 * weight1 + matrix2.r1c3 * weight2) + (matrix3.r1c3 * weight3 + matrix4.r1c3 * weight4) + matrix5.r1c3 * weight5;
sum.r2c1 = (matrix1.r2c1 * weight1 + matrix2.r2c1 * weight2) + (matrix3.r2c1 * weight3 + matrix4.r2c1 * weight4) + matrix5.r2c1 * weight5;
sum.r2c2 = (matrix1.r2c2 * weight1 + matrix2.r2c2 * weight2) + (matrix3.r2c2 * weight3 + matrix4.r2c2 * weight4) + matrix5.r2c2 * weight5;
sum.r2c3 = (matrix1.r2c3 * weight1 + matrix2.r2c3 * weight2) + (matrix3.r2c3 * weight3 + matrix4.r2c3 * weight4) + matrix5.r2c3 * weight5;
sum.r3c1 = (matrix1.r3c1 * weight1 + matrix2.r3c1 * weight2) + (matrix3.r3c1 * weight3 + matrix4.r3c1 * weight4) + matrix5.r3c1 * weight5;
sum.r3c2 = (matrix1.r3c2 * weight1 + matrix2.r3c2 * weight2) + (matrix3.r3c2 * weight3 + matrix4.r3c2 * weight4) + matrix5.r3c2 * weight5;
sum.r3c3 = (matrix1.r3c3 * weight1 + matrix2.r3c3 * weight2) + (matrix3.r3c3 * weight3 + matrix4.r3c3 * weight4) + matrix5.r3c3 * weight5;
}
public static void GetRightProduct(in SPMatrix3x3 matrix, in SPVector3 vector, out SPVector3 result)
{
float x1 = matrix.r1c1 * vector.x1 + matrix.r1c2 * vector.x2 + matrix.r1c3 * vector.x3;