Ejemplo n.º 1
0
 public Matrix4x4 add(Matrix4x4 other) {
   return new Matrix4x4(
       this.mat4[0] + other.get_value(0),
       this.mat4[1] + other.get_value(1),
       this.mat4[2] + other.get_value(2),
       this.mat4[3] + other.get_value(3),
       this.mat4[4] + other.get_value(4),
       this.mat4[5] + other.get_value(5),
       this.mat4[6] + other.get_value(6),
       this.mat4[7] + other.get_value(7),
       this.mat4[8] + other.get_value(8),
       this.mat4[9] + other.get_value(9),
       this.mat4[10] + other.get_value(10),
       this.mat4[11] + other.get_value(11),
       this.mat4[12] + other.get_value(12),
       this.mat4[13] + other.get_value(13),
       this.mat4[14] + other.get_value(14),
       this.mat4[15] + other.get_value(15));
 }
Ejemplo n.º 2
0
 public Matrix4x4 subtract(Matrix4x4 other) {
   return new Matrix4x4(
       this.mat4[0] - other.get_value(0),
       this.mat4[1] - other.get_value(1),
       this.mat4[2] - other.get_value(2),
       this.mat4[3] - other.get_value(3),
       this.mat4[4] - other.get_value(4),
       this.mat4[5] - other.get_value(5),
       this.mat4[6] - other.get_value(6),
       this.mat4[7] - other.get_value(7),
       this.mat4[8] - other.get_value(8),
       this.mat4[9] - other.get_value(9),
       this.mat4[10] - other.get_value(10),
       this.mat4[11] - other.get_value(11),
       this.mat4[12] - other.get_value(12),
       this.mat4[13] - other.get_value(13),
       this.mat4[14] - other.get_value(14),
       this.mat4[15] - other.get_value(15));
 }
Ejemplo n.º 3
0
  // copy constructor
  public Matrix4x4(Matrix4x4 mat) {
    this.mat4[0] = mat.get_value(0);
    this.mat4[1] = mat.get_value(1);
    this.mat4[2] = mat.get_value(2);
    this.mat4[3] = mat.get_value(3);

    this.mat4[4] = mat.get_value(4);
    this.mat4[5] = mat.get_value(5);
    this.mat4[6] = mat.get_value(6);
    this.mat4[7] = mat.get_value(7);

    this.mat4[8] = mat.get_value(8);
    this.mat4[9] = mat.get_value(9);
    this.mat4[10] = mat.get_value(10);
    this.mat4[11] = mat.get_value(11);

    this.mat4[12] = mat.get_value(12);
    this.mat4[13] = mat.get_value(13);
    this.mat4[14] = mat.get_value(14);
    this.mat4[15] = mat.get_value(15);

    flagBits = Mathematics.mat_type_General;
  }
Ejemplo n.º 4
0
  private Matrix4x4 orthonormalInverse() {
    Matrix4x4 result = new Matrix4x4(1); // The '1' says not to load identity

    result.set_value(0, mat4[0]);
    result.set_value(4, mat4[1]);
    result.set_value(8, mat4[2]);

    result.set_value(1, mat4[4]);
    result.set_value(5, mat4[5]);
    result.set_value(9, mat4[6]);

    result.set_value(2, mat4[8]);
    result.set_value(6, mat4[9]);
    result.set_value(10, mat4[10]);

    result.set_value(3, 0.0);
    result.set_value(7, 0.0);
    result.set_value(11, 0.0);

    // might have wrong values
    result.set_value(
        12,
        -(result.get_value(0) * mat4[12]
            + result.get_value(4) * mat4[13]
            + result.get_value(8) * mat4[14]));
    result.set_value(
        13,
        -(result.get_value(1) * mat4[12]
            + result.get_value(5) * mat4[13]
            + result.get_value(9) * mat4[14]));
    result.set_value(
        14,
        -(result.get_value(2) * mat4[12]
            + result.get_value(6) * mat4[13]
            + result.get_value(10) * mat4[14]));
    result.set_value(15, 1.0);

    return result;
  }
Ejemplo n.º 5
0
  public Matrix4x4 multiply(Matrix4x4 other) {
    if (this.flagBits == Mathematics.mat_type_Identity) return new Matrix4x4(other);
    else if (other.getType() == Mathematics.mat_type_Identity) return new Matrix4x4(this);

    return new Matrix4x4(
        // Fisrt Column
        mat4[0] * other.get_value(0)
            + mat4[4] * other.get_value(1)
            + mat4[8] * other.get_value(2)
            + mat4[12] * other.get_value(3),
        mat4[1] * other.get_value(0)
            + mat4[5] * other.get_value(1)
            + mat4[9] * other.get_value(2)
            + mat4[13] * other.get_value(3),
        mat4[2] * other.get_value(0)
            + mat4[6] * other.get_value(1)
            + mat4[10] * other.get_value(2)
            + mat4[14] * other.get_value(3),
        mat4[3] * other.get_value(0)
            + mat4[7] * other.get_value(1)
            + mat4[11] * other.get_value(2)
            + mat4[15] * other.get_value(3),

        // Second Column
        mat4[0] * other.get_value(4)
            + mat4[4] * other.get_value(5)
            + mat4[8] * other.get_value(6)
            + mat4[12] * other.get_value(7),
        mat4[1] * other.get_value(4)
            + mat4[5] * other.get_value(5)
            + mat4[9] * other.get_value(6)
            + mat4[13] * other.get_value(7),
        mat4[2] * other.get_value(4)
            + mat4[6] * other.get_value(5)
            + mat4[10] * other.get_value(6)
            + mat4[14] * other.get_value(7),
        mat4[3] * other.get_value(4)
            + mat4[7] * other.get_value(5)
            + mat4[11] * other.get_value(6)
            + mat4[15] * other.get_value(7),

        // Third Column
        mat4[0] * other.get_value(8)
            + mat4[4] * other.get_value(9)
            + mat4[8] * other.get_value(10)
            + mat4[12] * other.get_value(11),
        mat4[1] * other.get_value(8)
            + mat4[5] * other.get_value(9)
            + mat4[9] * other.get_value(10)
            + mat4[13] * other.get_value(11),
        mat4[2] * other.get_value(8)
            + mat4[6] * other.get_value(9)
            + mat4[10] * other.get_value(10)
            + mat4[14] * other.get_value(11),
        mat4[3] * other.get_value(8)
            + mat4[7] * other.get_value(9)
            + mat4[11] * other.get_value(10)
            + mat4[15] * other.get_value(11),

        // Fourth Column
        mat4[0] * other.get_value(12)
            + mat4[4] * other.get_value(13)
            + mat4[8] * other.get_value(14)
            + mat4[12] * other.get_value(15),
        mat4[1] * other.get_value(12)
            + mat4[5] * other.get_value(13)
            + mat4[9] * other.get_value(14)
            + mat4[13] * other.get_value(15),
        mat4[2] * other.get_value(12)
            + mat4[6] * other.get_value(13)
            + mat4[10] * other.get_value(14)
            + mat4[14] * other.get_value(15),
        mat4[3] * other.get_value(12)
            + mat4[7] * other.get_value(13)
            + mat4[11] * other.get_value(14)
            + mat4[15] * other.get_value(15)
        // is General matrix...
        );
  }