/** * Converts {@link FMatrixRMaj} into {@link FMatrix5} * * @param input Input matrix. * @param output Output matrix. If null a new matrix will be declared. * @return Converted matrix. */ public static FMatrix5 convert(FMatrixRMaj input, FMatrix5 output) { if (output == null) { output = new FMatrix5(); } if (input.getNumRows() != 1 && input.getNumCols() != 1) { throw new ArgumentException("One row or column must have a length of 1 for it to be a vector"); } int length = Math.Max(input.getNumRows(), input.getNumCols()); if (length != 5) { throw new ArgumentException("Length of input vector is not 5. It is " + length); } output.a1 = input.data[0]; output.a2 = input.data[1]; output.a3 = input.data[2]; output.a4 = input.data[3]; output.a5 = input.data[4]; return(output); }
/** * Converts {@link FMatrix5} into {@link FMatrixRMaj}. * * @param input Input matrix. * @param output Output matrix. If null a new matrix will be declared. * @return Converted matrix. */ public static FMatrixRMaj convert(FMatrix5 input, FMatrixRMaj output) { if (output == null) { output = new FMatrixRMaj(5, 1); } if (output.getNumRows() != 1 && output.getNumCols() != 1) { throw new ArgumentException("One row or column must have a length of 1 for it to be a vector"); } int length = Math.Max(output.getNumRows(), output.getNumCols()); if (length != 5) { throw new ArgumentException("Length of input vector is not 5. It is " + length); } output.data[0] = input.a1; output.data[1] = input.a2; output.data[2] = input.a3; output.data[3] = input.a4; output.data[4] = input.a5; return(output); }
public static float normF(FMatrix5 M) { float scale = CommonOps_FDF5.elementMaxAbs(M); if (scale == 0.0f) { return(0.0f); } float a1 = M.a1 / scale, a2 = M.a2 / scale, a3 = M.a3 / scale, a4 = M.a4 / scale, a5 = M.a5 / scale; float sum = a1 * a1 + a2 * a2 + a3 * a3 + a4 * a4 + a5 * a5; return(scale * (float)Math.Sqrt(sum)); }
public static bool hasUncountable(FMatrix5 a) { if (UtilEjml.isUncountable(a.a1)) { return(true); } if (UtilEjml.isUncountable(a.a2)) { return(true); } if (UtilEjml.isUncountable(a.a3)) { return(true); } if (UtilEjml.isUncountable(a.a4)) { return(true); } if (UtilEjml.isUncountable(a.a5)) { return(true); } return(false); }
public static bool isIdentical(FMatrix5 a, FMatrix5 b, float tol) { if (!MatrixFeatures_FDRM.isIdentical(a.a1, b.a1, tol)) { return(false); } if (!MatrixFeatures_FDRM.isIdentical(a.a2, b.a2, tol)) { return(false); } if (!MatrixFeatures_FDRM.isIdentical(a.a3, b.a3, tol)) { return(false); } if (!MatrixFeatures_FDRM.isIdentical(a.a4, b.a4, tol)) { return(false); } if (!MatrixFeatures_FDRM.isIdentical(a.a5, b.a5, tol)) { return(false); } return(true); }
public static float fastNormF(FMatrix5 M) { float sum = M.a1 * M.a1 + M.a2 * M.a2 + M.a3 * M.a3 + M.a4 * M.a4 + M.a5 * M.a5; return((float)Math.Sqrt(sum)); }
public static void normalizeF(FMatrix5 M) { float val = normF(M); CommonOps_FDF5.divide(M, val); }