///////////////////////////////////////////////////////////////////////////////
//  CDualQuaternion.h

#ifndef CDUALQUATERNION_H_
#define CDUALQUATERNION_H_

#include "SQuaternion.h"

struct S3D;
struct SMatrix;

namespace math3d {

class CDualQuaternion {
	SQuaternion		m_RealPart,
		m_DualPart;

public:
	CDualQuaternion();
	CDualQuaternion(const SQuaternion& RealPart, const SQuaternion& DualPart);
	CDualQuaternion(const SQuaternion& Rotate, const S3D& Move);
	virtual ~CDualQuaternion();

	CDualQuaternion		operator+(const CDualQuaternion& Obj) const;
	CDualQuaternion		operator*(const CDualQuaternion& Obj) const;
	CDualQuaternion&	operator*=(const CDualQuaternion& Obj);

	//
	CDualQuaternion		GetInverse() const;

	// 実部
	const SQuaternion&	GetRealPart() const;

	// 非実部
	const SQuaternion&	GetDualPart() const;

	// 行列
	SMatrix		GetMatrix() const;
};

}

#endif // CDUALQUATERNION_H_

