2 #include <mof/math/basic_matrix.hpp>
11 * @brief 3次元アフィン同次座標変換行列クラス
13 class matrix3 : public basic_matrix<3, matrix3, vector3>
18 * @brief デフォルトコンストラクタ.最後の要素以外を0で初期化する.
22 for (size_t i = 0; i <= last_index() - 1; ++i) {
25 components_[last_index()] = 1;
30 * @tparam T 配列型(operator[]をオーバーロードしていること)
31 * @param[in] arr 初期化用配列
34 explicit matrix3(const T& arr)
36 for (size_t i = 0; i <= last_index() - 1; ++i) {
37 components_[i] = arr[i];
39 components_[last_index()] = 1;
47 float m11, float m12, float m13, float m14,
48 float m21, float m22, float m23, float m24,
49 float m31, float m32, float m33, float m34,
50 float m41, float m42, float m43
53 const float* table[] =
55 &m11, &m12, &m13, &m14,
56 &m21, &m22, &m23, &m24,
57 &m31, &m32, &m33, &m34,
60 for (size_t i = 0; i <= last_index() - 1; ++i) {
61 components_[i] = *table[i];
63 components_[last_index()] = 1;
67 //{{{ copy constructor
68 matrix3(const matrix3& rhs)
70 for (size_t i = 0; i < last_index(); ++i) {
71 components_[i] = rhs.components_[i];
77 * @note コピーのパフォーマンスのためにこの関数の定義は重要
79 matrix3& operator = (const matrix3& rhs)
81 for (size_t i = 0; i < last_index(); ++i) {
82 components_[i] = rhs.components_[i];