public void Matrix3dDeterminantTest() { Matrix3d m = new Matrix3d(); m.A00 = 6; m.A10 = 4; m.A20 = 2; m.A01 = 1; m.A11 = -2; m.A21 = 8; m.A02 = 1; m.A12 = 5; m.A22 = 7; Assert.AreEqual(-306, m.Determinate()); }
private double GetDeterminant(Point3d p, VectorField f) { var dx = 1.0; var dy = dx; var dz = dx; var px = new Point3d(dx, 0, 0); var py = new Point3d(0, dy, 0); var pz = new Point3d(0, 0, dz); Matrix3d m = new Matrix3d(); m.A00 = (f.X[p + px / 2] - f.X[p - px / 2]) / dx; m.A01 = (f.X[p + py / 2] - f.X[p - py / 2]) / dy; m.A02 = (f.X[p + pz / 2] - f.X[p - pz / 2]) / dz; m.A10 = (f.Y[p + px / 2] - f.X[p - px / 2]) / dx; m.A11 = (f.Y[p + py / 2] - f.X[p - py / 2]) / dy; m.A12 = (f.Y[p + pz / 2] - f.X[p - pz / 2]) / dz; m.A20 = (f.Z[p + px / 2] - f.X[p - px / 2]) / dx; m.A21 = (f.Z[p + py / 2] - f.X[p - py / 2]) / dy; m.A22 = (f.Z[p + pz / 2] - f.X[p - pz / 2]) / dz; return(m.Determinate()); }