com.jogamp.opengl.math

## Class Matrix4

- java.lang.Object
- - com.jogamp.opengl.math.Matrix4

-     public class Matrix4
      extends Object

  Simple float array-backed float 4x4 matrix exposing `FloatUtil` matrix functionality in an object oriented manner.

  Unlike `PMVMatrix`, this class only represents one single matrix without a complete `GLMatrixFunc` implementation, allowing this class to be more lightweight.

  Implementation is not mature - WIP and subject to change.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Matrix4()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `float` | `determinant()`
    `float[]` | `getMatrix()`
    `boolean` | `invert()`
    `void` | `loadIdentity()`
    `void` | `makeFrustum(float left, float right, float bottom, float top, float zNear, float zFar)`
    `void` | `makeOrtho(float left, float right, float bottom, float top, float zNear, float zFar)`
    `void` | `makePerspective(float fovy_rad, float aspect, float zNear, float zFar)`
    `void` | `multMatrix(float[] m)` Multiply matrix: [this] = [this] x [m]
    `void` | `multMatrix(float[] m, int m_offset)` Multiply matrix: [this] = [this] x [m]
    `void` | `multMatrix(Matrix4 m)` Multiply matrix: [this] = [this] x [m]
    `void` | `multVec(float[] v_in, float[] v_out)`
    `void` | `multVec(float[] v_in, int v_in_offset, float[] v_out, int v_out_offset)`
    `void` | `rotate(float angrad, float x, float y, float z)`
    `void` | `rotate(Quaternion quat)` Rotate the current matrix with the given `Quaternion`'s rotation `matrix representation`.
    `void` | `scale(float x, float y, float z)`
    `void` | `translate(float x, float y, float z)`
    `void` | `transpose()`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Matrix4

          public Matrix4()

  - ### Method Detail

    - #### getMatrix

          public final float[] getMatrix()

    - #### loadIdentity

          public final void loadIdentity()

    - #### multMatrix

          public final void multMatrix(float[] m,
                        int m_offset)

      Multiply matrix: [this] = [this] x [m]
      Parameters:
        `m` - 4x4 matrix in column-major order

    - #### multMatrix

          public final void multMatrix(float[] m)

      Multiply matrix: [this] = [this] x [m]
      Parameters:
        `m` - 4x4 matrix in column-major order

    - #### multMatrix

          public final void multMatrix(Matrix4 m)

      Multiply matrix: [this] = [this] x [m]
      Parameters:
        `m` - 4x4 matrix in column-major order

    - #### multVec

          public final void multVec(float[] v_in,
                     float[] v_out)

      Parameters:
        `v_in` - 4-component column-vector
        `v_out` - this * v_in

    - #### multVec

          public final void multVec(float[] v_in,
                     int v_in_offset,
                     float[] v_out,
                     int v_out_offset)

      Parameters:
        `v_in` - 4-component column-vector
        `v_out` - this * v_in

    - #### translate

          public final void translate(float x,
                       float y,
                       float z)

    - #### scale

          public final void scale(float x,
                   float y,
                   float z)

    - #### rotate

          public final void rotate(float angrad,
                    float x,
                    float y,
                    float z)

    - #### rotate

          public final void rotate(Quaternion quat)

      Rotate the current matrix with the given `Quaternion`'s rotation `matrix representation`.

    - #### transpose

          public final void transpose()

    - #### determinant

          public final float determinant()

    - #### invert

          public final boolean invert()

    - #### makeOrtho

          public final void makeOrtho(float left,
                       float right,
                       float bottom,
                       float top,
                       float zNear,
                       float zFar)

    - #### makeFrustum

          public final void makeFrustum(float left,
                         float right,
                         float bottom,
                         float top,
                         float zNear,
                         float zFar)

    - #### makePerspective

          public final void makePerspective(float fovy_rad,
                             float aspect,
                             float zNear,
                             float zFar)

Copyright 2010 JogAmp Community.