#ifndef PW_CORE_AXISANGLE_HPP
#define PW_CORE_AXISANGLE_HPP

#include <pw/core/vector.hpp>

namespace pw {

template <typename T>
class axisangle {
protected:
    vector3<T> _axis;
    T _angle;
public:

	axisangle()
		: _axis(vector3<T>::up()),
		  _angle(0)
	{}

    axisangle(const vector3<T> &axis,const T &angle)
        : _axis(axis)
        , _angle(angle)
    {
    }

    vector3<T> axis() const { return _axis; }
    void set_axis(const vector3<T> &axis) { _axis = axis; }

    T angle() const { return _angle; }
    void set_angle(const T &angle) { _angle = angle; }

};

typedef axisangle<double> axisangled;

}





#endif
