Home | History | Annotate | Download | only in src
      1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Matrix implementation here is col-major, both storage-wise and
      6 // operation-wise.
      7 
      8 #ifndef MATRIXOP_H_INCLUDED
      9 #define MATRIXOP_H_INCLUDED
     10 
     11 typedef float Matrix4x4[16];
     12 typedef float Matrix3x3[9];
     13 
     14 // result = mat1 * mat2
     15 extern void Matrix4x4_Multiply(Matrix4x4 result,
     16                                Matrix4x4 mat1, Matrix4x4 mat2);
     17 
     18 // dst = src
     19 extern void Matrix4x4_Copy(Matrix4x4 dst, Matrix4x4 src);
     20 
     21 extern void Matrix4x4_LoadIdentity(Matrix4x4 mat);
     22 
     23 // mat = ScaleMatrix(sx, sy, sz) * mat
     24 extern void Matrix4x4_Scale(Matrix4x4 mat,
     25                             float sx, float sy, float sz);
     26 
     27 // mat = TranslateMatrix(tx, ty, tz) * mat
     28 extern void Matrix4x4_Translate(Matrix4x4 mat,
     29                                 float tx, float ty, float tz);
     30 
     31 // mat = RotateMatrix(angle, ax, ay, az) * mat
     32 extern void Matrix4x4_Rotate(Matrix4x4 mat, float angle,
     33                              float ax, float ay, float az);
     34 
     35 // mat = FrustumMatrix(left, right, bottom, top, near, far) * mat
     36 extern void Matrix4x4_Frustum(Matrix4x4 mat,
     37                               float left, float right,
     38                               float bottom, float top,
     39                               float near, float far);
     40 
     41 extern void Matrix4x4_Perspective(Matrix4x4 mat, float fovy, float aspect,
     42                                   float nearZ, float farZ);
     43 
     44 // [x,y,z] = mat(3x3) * [x,y,z]
     45 extern void Matrix4x4_Transform(Matrix4x4 mat, float *x, float *y, float *z);
     46 
     47 #endif  // MATRIXOP_H_INCLUDED
     48 
     49