X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmatrix.h;h=2dc3b972721ef1eeb417f4d3b2be6499bb72ca45;hb=fa5b232a16e11d7950e80764497f0167ec9e3b41;hp=539a613e6966087fbe47cb2002227a41bd7d57b5;hpb=4f8c3fd99d21b455e83d2d315be60669b2afc122;p=libs%2Fgl.git diff --git a/source/matrix.h b/source/matrix.h index 539a613e..2dc3b972 100644 --- a/source/matrix.h +++ b/source/matrix.h @@ -10,58 +10,57 @@ namespace Msp { namespace GL { -class Matrix: public LinAl::SquareMatrix +class Matrix: public LinAl::SquareMatrix { private: - typedef LinAl::SquareMatrix Base; - typedef Geometry::Angle Angle; + typedef LinAl::SquareMatrix Base; + typedef Geometry::Angle Angle; public: Matrix(); Matrix(const float *); - Matrix(const double *); - Matrix(const LinAl::Matrix &); + Matrix(const LinAl::Matrix &); - const double *data() const { return &Base::operator()(0, 0); } + const float *data() const { return &Base::operator()(0, 0); } void multiply(const Matrix &); - void translate(double x, double y, double z) { translate(Vector3(x, y, z)); } + void translate(float x, float y, float z) { translate(Vector3(x, y, z)); } void translate(const Vector3 &); - void rotate(const Angle &a, double x, double y, double z) { rotate(a, Vector3(x, y, z)); } + void rotate(const Angle &a, float x, float y, float z) { rotate(a, Vector3(x, y, z)); } void rotate(const Angle &, const Vector3 &); - void rotate(double a, double x, double y, double z) { rotate(Angle::from_radians(a), Vector3(x, y, z)); } - void rotate(double a, const Vector3 &x) { rotate(Angle::from_radians(a), x); } - void rotate_deg(double a, double x, double y, double z) { rotate(Angle::from_degrees(a), Vector3(x, y, z)); } - void rotate_deg(double a, const Vector3 & x) { rotate(Angle::from_degrees(a), x); } - void scale(double s) { scale(Vector3(s, s, s)); } - void scale(double x, double y, double z) { scale(Vector3(x, y, z)); } + void rotate(float a, float x, float y, float z) { rotate(Angle::from_radians(a), Vector3(x, y, z)); } + void rotate(float a, const Vector3 &x) { rotate(Angle::from_radians(a), x); } + void rotate_deg(float a, float x, float y, float z) { rotate(Angle::from_degrees(a), Vector3(x, y, z)); } + void rotate_deg(float a, const Vector3 & x) { rotate(Angle::from_degrees(a), x); } + void scale(float s) { scale(Vector3(s, s, s)); } + void scale(float x, float y, float z) { scale(Vector3(x, y, z)); } void scale(const Vector3 &); Matrix operator*(const Matrix &) const; Matrix &operator*=(const Matrix &); Vector4 operator*(const Vector4 &) const; Vector3 operator*(const Vector3 &) const; - double operator[](unsigned) const; + float operator[](unsigned) const; - static Matrix translation(double x, double y, double z) { return translation(Vector3(x, y, z)); } + static Matrix translation(float x, float y, float z) { return translation(Vector3(x, y, z)); } static Matrix translation(const Vector3 &); - static Matrix rotation(const Angle &a, double x, double y, double z) { return rotation(a, Vector3(x, y, z)); } + static Matrix rotation(const Angle &a, float x, float y, float z) { return rotation(a, Vector3(x, y, z)); } static Matrix rotation(const Angle &, const Vector3 &); - static Matrix rotation(double a, double x, double y, double z) { return rotation(Angle::from_radians(a), Vector3(x, y, z)); } - static Matrix rotation(double a, const Vector3 &x) { return rotation(Angle::from_radians(a), x); } - static Matrix rotation_deg(double a, double x, double y, double z) { return rotation(Angle::from_degrees(a), Vector3(x, y, z)); } - static Matrix rotation_deg(double a, const Vector3 &x) { return rotation(Angle::from_degrees(a), x); } - static Matrix scaling(double s) { return scaling(Vector3(s, s, s)); } - static Matrix scaling(double x, double y, double z) { return scaling(Vector3(x, y, z)); } + static Matrix rotation(float a, float x, float y, float z) { return rotation(Angle::from_radians(a), Vector3(x, y, z)); } + static Matrix rotation(float a, const Vector3 &x) { return rotation(Angle::from_radians(a), x); } + static Matrix rotation_deg(float a, float x, float y, float z) { return rotation(Angle::from_degrees(a), Vector3(x, y, z)); } + static Matrix rotation_deg(float a, const Vector3 &x) { return rotation(Angle::from_degrees(a), x); } + static Matrix scaling(float s) { return scaling(Vector3(s, s, s)); } + static Matrix scaling(float x, float y, float z) { return scaling(Vector3(x, y, z)); } static Matrix scaling(const Vector3 &); - static Matrix ortho(double, double, double, double, double, double); - static Matrix ortho_centered(double, double); - static Matrix ortho_bottomleft(double, double); - static Matrix ortho_topleft(double, double); - static Matrix frustum(double, double, double, double, double, double); - static Matrix frustum_centered(double, double, double, double); - static Matrix perspective(double, double, double, double); + static Matrix ortho(float, float, float, float, float, float); + static Matrix ortho_centered(float, float); + static Matrix ortho_bottomleft(float, float); + static Matrix ortho_topleft(float, float); + static Matrix frustum(float, float, float, float, float, float); + static Matrix frustum_centered(float, float, float, float); + static Matrix perspective(const Angle &, float, float, float); }; class MatrixStack