package automenta.vivisect.face;
/**
*
* @author me
*/
class MatrixN
{
MatrixN(int i)
{
v = new VectorN[i];
for(int j = 0; j < i; j++)
v[j] = new VectorN(i);
}
VectorN get(int i)
{
return v[i];
}
double get(int i, int j)
{
return get(i).get(j);
}
void identity()
{
for(int i = 0; i < size(); i++)
{
for(int j = 0; j < size(); j++)
set(j, i, j != i ? 0 : 1);
}
}
void postMultiply(MatrixN matrixn)
{
MatrixN matrixn1 = new MatrixN(size());
for(int i = 0; i < size(); i++)
{
for(int j = 0; j < size(); j++)
{
double d = 0.0D;
for(int k = 0; k < size(); k++)
d += get(j, k) * matrixn.get(k, i);
matrixn1.set(j, i, d);
}
}
set(matrixn1);
}
void preMultiply(MatrixN matrixn)
{
MatrixN matrixn1 = new MatrixN(size());
for(int i = 0; i < size(); i++)
{
for(int j = 0; j < size(); j++)
{
double d = 0.0D;
for(int k = 0; k < size(); k++)
d += matrixn.get(j, k) * get(k, i);
matrixn1.set(j, i, d);
}
}
set(matrixn1);
}
void set(int i, int j, double d)
{
v[i].set(j, d);
}
void set(int i, VectorN vectorn)
{
v[i].set(vectorn);
}
void set(MatrixN matrixn)
{
for(int i = 0; i < size(); i++)
set(i, matrixn.get(i));
}
int size()
{
return v.length;
}
public String toString()
{
String s = "{";
for(int i = 0; i < size(); i++)
s = s + (i != 0 ? "," : "") + get(i);
return s + "}";
}
private VectorN v[];
}