Class ShadowOpenGLMatrix

    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      protected static void multiplyMM​(float[] result, int resultOffset, float[] lhs, int lhsOffset, float[] rhs, int rhsOffset)
      Multiplies two 4x4 matrices together and stores the result in a third 4x4 matrix.
      protected static void multiplyMV​(float[] resultVec, int resultVecOffset, float[] lhsMat, int lhsMatOffset, float[] rhsVec, int rhsVecOffset)
      Multiplies a 4 element vector by a 4x4 matrix and stores the result in a 4-element column vector.
    • Constructor Detail

      • ShadowOpenGLMatrix

        public ShadowOpenGLMatrix()
    • Method Detail

      • multiplyMM

        @Implementation
        protected static void multiplyMM​(float[] result,
                                         int resultOffset,
                                         float[] lhs,
                                         int lhsOffset,
                                         float[] rhs,
                                         int rhsOffset)
        Multiplies two 4x4 matrices together and stores the result in a third 4x4 matrix. In matrix notation: result = lhs x rhs. Due to the way matrix multiplication works, the result matrix will have the same effect as first multiplying by the rhs matrix, then multiplying by the lhs matrix. This is the opposite of what you might expect.

        The same float array may be passed for result, lhs, and/or rhs. However, the result element values are undefined if the result elements overlap either the lhs or rhs elements.

        Parameters:
        result - The float array that holds the result.
        resultOffset - The offset into the result array where the result is stored.
        lhs - The float array that holds the left-hand-side matrix.
        lhsOffset - The offset into the lhs array where the lhs is stored
        rhs - The float array that holds the right-hand-side matrix.
        rhsOffset - The offset into the rhs array where the rhs is stored.
        Throws:
        IllegalArgumentException - if result, lhs, or rhs are null, or if resultOffset + 16 > result.length or lhsOffset + 16 > lhs.length or rhsOffset + 16 > rhs.length.
      • multiplyMV

        @Implementation
        protected static void multiplyMV​(float[] resultVec,
                                         int resultVecOffset,
                                         float[] lhsMat,
                                         int lhsMatOffset,
                                         float[] rhsVec,
                                         int rhsVecOffset)
        Multiplies a 4 element vector by a 4x4 matrix and stores the result in a 4-element column vector. In matrix notation: result = lhs x rhs

        The same float array may be passed for resultVec, lhsMat, and/or rhsVec. However, the resultVec element values are undefined if the resultVec elements overlap either the lhsMat or rhsVec elements.

        Parameters:
        resultVec - The float array that holds the result vector.
        resultVecOffset - The offset into the result array where the result vector is stored.
        lhsMat - The float array that holds the left-hand-side matrix.
        lhsMatOffset - The offset into the lhs array where the lhs is stored
        rhsVec - The float array that holds the right-hand-side vector.
        rhsVecOffset - The offset into the rhs vector where the rhs vector is stored.
        Throws:
        IllegalArgumentException - if resultVec, lhsMat, or rhsVec are null, or if resultVecOffset + 4 > resultVec.length or lhsMatOffset + 16 > lhsMat.length or rhsVecOffset + 4 > rhsVec.length.