aiMatrix3x3.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /** @file Definition of a 3x3 matrix, including operators when compiling in C++ */
  2. #ifndef AI_MATRIX3x3_H_INC
  3. #define AI_MATRIX3x3_H_INC
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. struct aiMatrix4x4;
  8. // ---------------------------------------------------------------------------
  9. /** Represents a column-major 3x3 matrix
  10. */
  11. // ---------------------------------------------------------------------------
  12. typedef struct aiMatrix3x3
  13. {
  14. #ifdef __cplusplus
  15. aiMatrix3x3 () :
  16. a1(1.0f), a2(0.0f), a3(0.0f),
  17. b1(0.0f), b2(1.0f), b3(0.0f),
  18. c1(0.0f), c2(0.0f), c3(1.0f) {}
  19. aiMatrix3x3 ( float _a1, float _a2, float _a3,
  20. float _b1, float _b2, float _b3,
  21. float _c1, float _c2, float _c3) :
  22. a1(_a1), a2(_a2), a3(_a3),
  23. b1(_b1), b2(_b2), b3(_b3),
  24. c1(_c1), c2(_c2), c3(_c3)
  25. {}
  26. /** Construction from a 4x4 matrix. The remaining parts of the matrix are ignored. */
  27. explicit aiMatrix3x3( const aiMatrix4x4& pMatrix);
  28. aiMatrix3x3& operator *= (const aiMatrix3x3& m);
  29. aiMatrix3x3 operator* (const aiMatrix3x3& m) const;
  30. aiMatrix3x3& Transpose();
  31. #endif // __cplusplus
  32. float a1, a2, a3;
  33. float b1, b2, b3;
  34. float c1, c2, c3;
  35. } aiMatrix3x3_t;
  36. #ifdef __cplusplus
  37. } // end of extern C
  38. #endif
  39. #endif // AI_MATRIX3x3_H_INC