Matrix4.cpp 670 B

12345678910111213141516171819202122232425
  1. #include "Matrix4.h"
  2. #include "Quaternion.h"
  3. USING_NS_BF;
  4. Matrix4 Matrix4::sIdentity(
  5. 1.0f, 0.0f, 0.0f, 0.0f,
  6. 0.0f, 1.0f, 0.0f, 0.0f,
  7. 0.0f, 0.0f, 1.0f, 0.0f,
  8. 0.0f, 0.0f, 0.0f, 1.0f);
  9. Matrix4 Matrix4::CreateTransform(const Vector3& position, const Vector3& scale, const Quaternion& orientation)
  10. {
  11. // Ordering:
  12. // 1. Scale
  13. // 2. Rotate
  14. // 3. Translate
  15. Matrix4 rot = orientation.ToMatrix();
  16. return Matrix4(
  17. scale.mX * rot.m00, scale.mY * rot.m01, scale.mZ * rot.m02, position.mX,
  18. scale.mX * rot.m10, scale.mY * rot.m11, scale.mZ * rot.m12, position.mY,
  19. scale.mX * rot.m20, scale.mY * rot.m21, scale.mZ * rot.m22, position.mZ,
  20. 0, 0, 0, 1);
  21. }