X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmatrix.h;h=5444b8b4e4fae1c1789077ea58eb2099a06d8e58;hb=1b7b75e3aaec35433cce81fc58e58e50e5a3f36e;hp=a2194916e52d80a8e7cd322b1af93e0b3871d223;hpb=1d59ea8601436164f8bfc114da3941cb0871e87b;p=libs%2Fgl.git diff --git a/source/matrix.h b/source/matrix.h index a2194916..5444b8b4 100644 --- a/source/matrix.h +++ b/source/matrix.h @@ -1,15 +1,9 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef MSP_GL_MATRIX_H_ #define MSP_GL_MATRIX_H_ -#include +#include #include "gl.h" +#include "vector.h" namespace Msp { namespace GL { @@ -41,18 +35,25 @@ public: void multiply(const Matrix &); void translate(double, double, double); + void translate(const Vector3 &t) { translate(t.x, t.y, t.z); } void rotate(double, double, double, double); + void rotate(double a, const Vector3 &x) { rotate(a, x.x, x.y, x.z); } void rotate_deg(double, double, double, double); + void rotate_deg(double a, const Vector3 & x) { rotate_deg(a, x.x, x.y, x.z); } void scale(double); void scale(double, double, double); Matrix operator*(const Matrix &) const; Matrix &operator*=(const Matrix &); + Vector4 operator*(const Vector4 &) const; double operator[](unsigned) const; static Matrix translation(double, double, double); + static Matrix translation(const Vector3 &t) { return translation(t.x, t.y, t.z); } static Matrix rotation(double, double, double, double); + static Matrix rotation(double a, const Vector3 &x) { return rotation(a, x.x, x.y, x.z); } static Matrix rotation_deg(double, double, double, double); + static Matrix rotation_deg(double a, const Vector3 &x) { return rotation_deg(a, x.x, x.y, x.z); } static Matrix scaling(double); static Matrix scaling(double, double, double); @@ -80,7 +81,7 @@ public: private: GLenum mode; - std::list matrices; + std::vector matrices; static GLenum current_mode; @@ -90,13 +91,13 @@ private: public: MatrixStack(); - const Matrix &top(); + const Matrix &top() const; void load(const Matrix &); void multiply(const Matrix &); void push(); void pop(); private: - void update(); + virtual void update(); public: MatrixStack &operator=(const Matrix &);