Purpose: A utility class that can be used to perform matrix arithmetic.
About the System: This class will be used by a 2D renderer and a 3D renderer (and, perhaps, other classes).
Details
Encapsulating Matrices:
double[][] to hold the elements.
  Dimensionality Problems:
null or throw
  an IllegalArgumentException.
  Side Effects:
The cofactor() Method:
    /**
     * Calculate the cofactor of a square matrix
     * (i.e., the signed determinate of the mtraix with row
     * i and column j removed)
     *
     * @param a   The matrix (mxm)
     * @param i   The index of the row to exclude
     * @param j   The index of the col to exclude
     * @return    The cofactor
     */
    public static double cofactor(double[][] a, int i, int j)
  
The det() Method:
    /**
     * Calculate the determinant of a square matrix
     *
     * @param a   The matrix (mxm)
     * @return    The value of the determinant
     */
    public static double det(double[][] a)
  
The identity() Method:
    /**
     * Create an (nxn) identity matrix
     * 
     * @param n   The size of the (square) matrix
     * @return    The identity matrix
     */
    public double[][] identity(int n)
  
The minor() Method:
    /**
     * Create a particular minor from a square matrix
     *
     * @param a   The matrix (mxm)
     * @param i   The index of the row to exclude
     * @param j   The index of the col to exclude
     * @return    The minor (i.e., a with row i and column j excluded)
     */
    public static double minor(double[][] a, int i, int j)
  
The submatrix() Method:
    /**
     * Remove a row and column from a matrix
     *
     * @param a   The matrix (mxm)
     * @param i   The index of the row to exclude
     * @param j   The index of the col to exclude
     * @return    The submatrix (i.e., a with row i and column j excluded)
     */
    public static double[][] submatrix(double[][] a, int i, int j)
  
The sum() Method:
    /**
     * Add two matrices
     *
     * @param  a  One matrix
     * @param  b  The other matrix
     * @return    a + b
     */
    public static double[][] sum(double[][] a, double[][] b)
  
The times(double[], double[][]) Method:
    /**
     * Multiply a row vector and a matrix
     *
     * @param v   The row vector (1xn)
     * @param m   The matrix     (nxm)
     * @return    The resulting row vector (1xm)
     */
    public static double[] times(double[] v, double[][] m)
  
The times(double[][], double[][]) Method:
    /**
     * Multiply two matrices
     *
     * @param a   The first matrix (mxn)
     * @param b   The second matrix (nxs)
     * @return    The resulting matrix (mxs)
     */
    public static double[][] times(double[][] a, double[][] b) 
  
The transpose() Method:
    /**
     * Create the transpose of a matrix
     *
     * @param  a  The matrix
     * @return    a tranposed
     */
    public static double[][] transpose(double[][] a)
  
Copyright 2007