//	matrix3d.cpp
//

#include "stdafx.h"
#include "matrix3d.h"

Matrix3D::Matrix3D(void)
{
	InitMatrix();
}

Matrix3D::Matrix3D(const Matrix3D& m3d)
{
	InitMatrix();
	Copy(m3d);
}

Matrix3D::~Matrix3D(void)
{
}

void Matrix3D::Copy(const Matrix3D& m3d)
{
	m3d.GetScale(m_scale[0],m_scale[1],m_scale[2]);
	m3d.GetRotation(m_rotation[0],m_rotation[1],m_rotation[2]);
	m3d.GetPosition(m_position[0],m_position[1],m_position[2]);
}

Matrix3D& Matrix3D::operator = (const Matrix3D& m3d)
{
	Copy(m3d);
	return *this;
}

void Matrix3D::GetRotation(double& xrot, double& yrot, double& zrot)const
{
	xrot = m_rotation[0];
	yrot = m_rotation[1];
	zrot = m_rotation[2];
}

void Matrix3D::GetPosition(double& x, double& y, double& z)const
{
	x = m_position[0];
	y = m_position[1];
	z = m_position[2];
}

void Matrix3D::GetScale(double& xscale, double& yscale, double& zscale)const
{
	xscale = m_scale[0];
	yscale = m_scale[1];
	zscale = m_scale[2];
}

void Matrix3D::SetRotation(double xrot, double yrot, double zrot)
{
	m_rotation[0] = xrot;
	m_rotation[1] = yrot;
	m_rotation[2] = zrot;
}

void Matrix3D::SetPosition(double x, double y, double z)
{
	m_position[0] = x;
	m_position[1] = y;
	m_position[2] = z;
}

void Matrix3D::SetScale(double xscale, double yscale, double zscale)
{
	m_scale[0] = xscale;
	m_scale[1] = yscale;
	m_scale[2] = zscale;
}

void Matrix3D::AddRotation(double xrot, double yrot, double zrot)
{
	m_rotation[0] += xrot;
	m_rotation[1] += yrot;
	m_rotation[2] += zrot;
}