matrix3d.cpp
上传用户:lbr_007
上传日期:2019-05-31
资源大小:282k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

Visual C++

  1. // matrix3d.cpp
  2. //
  3. #include "stdafx.h"
  4. #include "matrix3d.h"
  5. Matrix3D::Matrix3D(void)
  6. {
  7. InitMatrix();
  8. }
  9. Matrix3D::Matrix3D(const Matrix3D& m3d)
  10. {
  11. InitMatrix();
  12. Copy(m3d);
  13. }
  14. Matrix3D::~Matrix3D(void)
  15. {
  16. }
  17. void Matrix3D::Copy(const Matrix3D& m3d)
  18. {
  19. m3d.GetScale(m_scale[0],m_scale[1],m_scale[2]);
  20. m3d.GetRotation(m_rotation[0],m_rotation[1],m_rotation[2]);
  21. m3d.GetPosition(m_position[0],m_position[1],m_position[2]);
  22. }
  23. Matrix3D& Matrix3D::operator = (const Matrix3D& m3d)
  24. {
  25. Copy(m3d);
  26. return *this;
  27. }
  28. void Matrix3D::GetRotation(double& xrot, double& yrot, double& zrot)const
  29. {
  30. xrot = m_rotation[0];
  31. yrot = m_rotation[1];
  32. zrot = m_rotation[2];
  33. }
  34. void Matrix3D::GetPosition(double& x, double& y, double& z)const
  35. {
  36. x = m_position[0];
  37. y = m_position[1];
  38. z = m_position[2];
  39. }
  40. void Matrix3D::GetScale(double& xscale, double& yscale, double& zscale)const
  41. {
  42. xscale = m_scale[0];
  43. yscale = m_scale[1];
  44. zscale = m_scale[2];
  45. }
  46. void Matrix3D::SetRotation(double xrot, double yrot, double zrot)
  47. {
  48. m_rotation[0] = xrot;
  49. m_rotation[1] = yrot;
  50. m_rotation[2] = zrot;
  51. }
  52. void Matrix3D::SetPosition(double x, double y, double z)
  53. {
  54. m_position[0] = x;
  55. m_position[1] = y;
  56. m_position[2] = z;
  57. }
  58. void Matrix3D::SetScale(double xscale, double yscale, double zscale)
  59. {
  60. m_scale[0] = xscale;
  61. m_scale[1] = yscale;
  62. m_scale[2] = zscale;
  63. }
  64. void Matrix3D::AddRotation(double xrot, double yrot, double zrot)
  65. {
  66. m_rotation[0] += xrot;
  67. m_rotation[1] += yrot;
  68. m_rotation[2] += zrot;
  69. }