mysimulation/server/tso.common/MeshSimplify/SymmetricMatrix.cs
Tony Bark a380de3a44 Mock FreeSO API
- Until the real FreeSO API server is properly reconfigured, a mock API will take it's place using Mockoon.
- Ported over a few elements from FSO.Common into the client.
2024-05-02 09:17:45 -04:00

58 lines
2 KiB
C#
Executable file

namespace FSO.Common.MeshSimplify
{
public class SymmetricMatrix
{
public SymmetricMatrix(double c)
{
for (int i = 0; i < 10; i++) m[i] = c;
}
public SymmetricMatrix(double m11, double m12, double m13, double m14,
double m22, double m23, double m24,
double m33, double m34,
double m44)
{
m[0] = m11; m[1] = m12; m[2] = m13; m[3] = m14;
m[4] = m22; m[5] = m23; m[6] = m24;
m[7] = m33; m[8] = m34;
m[9] = m44;
}
// Make plane
public SymmetricMatrix(double a, double b, double c, double d)
{
m[0] = a * a; m[1] = a * b; m[2] = a * c; m[3] = a * d;
m[4] = b * b; m[5] = b * c; m[6] = b * d;
m[7] = c * c; m[8] = c * d;
m[9] = d * d;
}
public double this[int c]
{
get { return m[c]; }
set { m[c] = value; }
}
public double[] m = new double[10];
//determinant
public double det(int a11, int a12, int a13,
int a21, int a22, int a23,
int a31, int a32, int a33)
{
double det = m[a11] * m[a22] * m[a33] + m[a13] * m[a21] * m[a32] + m[a12] * m[a23] * m[a31]
- m[a13] * m[a22] * m[a31] - m[a11] * m[a23] * m[a32] - m[a12] * m[a21] * m[a33];
return det;
}
public static SymmetricMatrix operator +(SymmetricMatrix m, SymmetricMatrix n)
{
return new SymmetricMatrix(m[0] + n[0], m[1] + n[1], m[2] + n[2], m[3] + n[3],
m[4] + n[4], m[5] + n[5], m[6] + n[6],
m[7] + n[7], m[8] + n[8],
m[9] + n[9]);
}
}
}