#ifndef TRANSFORM_MATRIX_3D_H
#define TRANSFORM_MATRIX_3D_H

#ifndef ROTATION_H
#include "Rotation.h"
#endif

class Transform_matrix_3D : public Rotation
{
    double                  a_[ 3 ] [ 4 ];
public:
    Transform_matrix_3D();
    ~Transform_matrix_3D();
    void                    rotate_x( double angle ) { rotate_x(angle,.0,.0); }
    void                    rotate_y( double angle ) { rotate_y(angle,.0,.0); }
    void                    rotate_z( double angle ) { rotate_z(angle,.0,.0); }
    void                    rotate_x( double angle, double y, double z );
    void                    rotate_y( double angle, double x, double z );
    void                    rotate_z( double angle, double x, double y );
    void                    move    (double x, double y, double z=.0);

    void                    apply   (double & x, double & y, double & z);
    void load_identity();
};

#endif //TRANSFORM_MATRIX_3D_H
