diff options
Diffstat (limited to 'chromium/third_party/angle/samples/angle/sample_util/Matrix.h')
-rw-r--r-- | chromium/third_party/angle/samples/angle/sample_util/Matrix.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/chromium/third_party/angle/samples/angle/sample_util/Matrix.h b/chromium/third_party/angle/samples/angle/sample_util/Matrix.h new file mode 100644 index 00000000000..c482c52a106 --- /dev/null +++ b/chromium/third_party/angle/samples/angle/sample_util/Matrix.h @@ -0,0 +1,46 @@ +// +// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +#ifndef SAMPLE_UTIL_MATRIX_H +#define SAMPLE_UTIL_MATRIX_H + +#include "Vector.h" + +struct Matrix4 +{ + float data[16]; + + Matrix4(); + Matrix4(float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13, + float m20, float m21, float m22, float m23, + float m30, float m31, float m32, float m33); + + static Matrix4 identity(); + static Matrix4 rotate(float angle, const Vector3 &p); + static Matrix4 translate(const Vector3 &t); + static Matrix4 scale(const Vector3 &s); + static Matrix4 frustum(float l, float r, float b, float t, float n, float f); + static Matrix4 perspective(float fov, float aspectRatio, float n, float f); + static Matrix4 ortho(float l, float r, float b, float t, float n, float f); + static Matrix4 rollPitchYaw(float roll, float pitch, float yaw); + + static Matrix4 invert(const Matrix4 &mat); + static Matrix4 transpose(const Matrix4 &mat); + static Vector3 transform(const Matrix4 &mat, const Vector3 &pt); + static Vector3 transform(const Matrix4 &mat, const Vector4 &pt); +}; + +Matrix4 operator*(const Matrix4 &a, const Matrix4 &b); +Matrix4 &operator*=(Matrix4 &a, const Matrix4 &b); +Matrix4 operator*(const Matrix4 &a, float b); +Matrix4 &operator*=(Matrix4 &a, float b); +Vector4 operator*(const Matrix4 &a, const Vector4 &b); + +bool operator==(const Matrix4 &a, const Matrix4 &b); +bool operator!=(const Matrix4 &a, const Matrix4 &b); + +#endif // SAMPLE_UTIL_MATRIX_H |