| 2504 | Component<type_struct, 9, 5> m21; |
| 2505 | Component<type_struct, 9, 6> m02; |
| 2506 | Component<type_struct, 9, 7> m12; |
| 2507 | Component<type_struct, 9, 8> m22; |
| 2508 | Subvec3D<column_type_struct, false, 9, 0, 1, 2> col0; |
| 2509 | Subvec3D<column_type_struct, false, 9, 3, 4, 5> col1; |
| 2510 | Subvec3D<column_type_struct, false, 9, 6, 7, 8> col2; |
| 2511 | Subvec3D<row_type_struct, true, 9, 0, 3, 6> row0; |
| 2512 | Subvec3D<row_type_struct, true, 9, 1, 4, 7> row1; |
| 2513 | Subvec3D<row_type_struct, true, 9, 2, 5, 8> row2; |
| 2514 | Submat2D<type_struct, 9, 0, 3, 1, 4> matrix2D; |
| 2515 | Submat2D<type_struct, 9, 0, 1, 3, 4> transpose2D; |
| 2516 | Submat3D<type_struct, 9, 0, 3, 6, 1, 4, 7, 2, 5, 8> matrix; |
| 2517 | Submat3D<type_struct, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8> transpose; |
| 2518 | }; |
| 2519 | |
| 2520 | protected: |
| 2521 | |
| 2522 | inline Mat3D() = default; |
| 2523 | |
| 2524 | Mat3D(const Mat3D& m) |
| 2525 | { |
| 2526 | matrix = m.matrix; |
| 2527 | } |
| 2528 | |
| 2529 | Mat3D(const component_type& n00, const component_type& n01, const component_type& n02, const component_type& n10, const component_type& n11, const component_type& n12, const component_type& n20, const component_type& n21, const component_type& n22) |
| 2530 | { |
| 2531 | matrix.Set(n00, n01, n02, n10, n11, n12, n20, n21, n22); |
| 2532 | } |
| 2533 | |
| 2534 | public: |
| 2535 | |
| 2536 | component_type& operator ()(machine i, machine j) |
| 2537 | { |
| 2538 | return (matrix.data[j * 3 + i]); |
| 2539 | } |
| 2540 | |
| 2541 | const component_type& operator ()(machine i, machine j) const |
| 2542 | { |
| 2543 | return (matrix.data[j * 3 + i]); |
| 2544 | } |
| 2545 | |
| 2546 | typename column_type_struct::vector3D_type& operator [](machine j) |
| 2547 | { |
| 2548 | return (reinterpret_cast<typename column_type_struct::vector3D_type&>(matrix.data[j * 3])); |
| 2549 | } |
| 2550 | |
| 2551 | const typename column_type_struct::vector3D_type& operator [](machine j) const |
| 2552 | { |
| 2553 | return (reinterpret_cast<const typename column_type_struct::vector3D_type&>(matrix.data[j * 3])); |
| 2554 | } |
| 2555 | |
| 2556 | Mat3D& operator =(const Mat3D& m) |
| 2557 | { |
| 2558 | matrix = m.matrix; |
| 2559 | return (*this); |
| 2560 | } |
| 2561 | |
| 2562 | void operator =(const Mat3D& m) volatile |
| 2563 | { |