- \r
- make_zero\r
- test using boost::test\r
- make_rotation make_scaling *** test \r
- make_rotation make_scaling *** impl\r
- doxygen\r
- \r
- \r
- Windows\82Å\83R\83\93\83p\83C\83\8b\89Â\94\\82É\82·\82é\r
- *numeric -> numeric_performance\r
- \r
- \r
- Visual Studio 10 on Windows----\r
- vcvarsall.bat\r
- cmake .. -G "Visual Studio 10"\r
- \r
- TODO *test\82Ì\8fo\97Í\82Ì\95\\8e¦\82Ì\82³\82¹\82©\82½\r
- vector,matrix\82É\82Â\82¢\82Äconst\95Ï\90\94\82Å\82à\83R\83\93\83p\83C\83\8b\82Í\92Ê\82é\82æ\82¤\82É\82·\82é
-いらないfriend削除
-実装の理由のメモ
++
+ make_zero
+ test using boost::test
+ make_rotation make_scaling *** test
+ make_rotation make_scaling *** impl
+ doxygen
+
+
-Windows\82Å\83R\83\93\83p\83C\83\8b\89Â\94\\82É\82·\82é
-*testbin\82Ísrc/\82Ì\92\86\82Å\82¢\82¢\82©\81H
-*test\83R\81[\83h\82Ì\83R\83\93\83p\83C\83\8b\82ª\92Ê\82ç\82È\82¢
-*test\82ð\8eÀ\8ds\82·\82é\82É\82Í\81H
++Windows\e$B$G%3%s%Q%$%k2DG=$K$9$k\e(B
+ *numeric -> numeric_performance
+
+
+ Visual Studio 10 on Windows----
+ vcvarsall.bat
+ cmake .. -G "Visual Studio 10"
+
-TODO *test\82Ì\8fo\97Í\82Ì\95\\8e¦\82Ì\82³\82¹\82©\82½
-windows\82Ìboost/operations\82Å\82Í N = N1 * N2\82Åcopy\83R\83\93\83X\83g\83\89\83N\83^\82ª\8cÄ\82Î\82ê\82é\81H
-vector,matrix\82É\82Â\82¢\82Äconst\95Ï\90\94\82Å\82à\83R\83\93\83p\83C\83\8b\82Í\92Ê\82é\82æ\82¤\82É\82·\82é
++TODO *test\e$B$N=PNO$NI=<($N$5$;$+$?\e(B
++vector,matrix\e$B$K$D$$$F\e(Bconst\e$BJQ?t$G$b%3%s%Q%$%k$ODL$k$h$&$K$9$k\e(B
- #pragma once\r
- #include <mof/math/basic_matrix.hpp>\r
- \r
- namespace mof\r
- {\r
- namespace math\r
- {\r
- class vector3;\r
- \r
- /**\r
- * @brief 3次元同次座標変換行列クラス\r
- */\r
- class matrix3 : public basic_matrix<3, matrix3, vector3>\r
- {\r
- public:\r
- //{{{ constructor\r
- /**\r
- * @brief デフォルトコンストラクタ\r
- * @note 効率のため,初期化は行われない\r
- */\r
- matrix3()\r
- {\r
- }\r
- \r
- /**\r
- * @brief 指定した値で初期化する.\r
- * @tparam T 配列型(operator[]をオーバーロードしていること)\r
- * @param[in] arr 初期化用配列\r
- */\r
- template <class T>\r
- explicit matrix3(const T& arr)\r
- {\r
- for (size_t i = 0; i < size(); ++i) {\r
- elements_[i] = arr[i];\r
- }\r
- }\r
- \r
- /**\r
- * @brief 指定した値で初期化する.\r
- */\r
- matrix3\r
- (\r
- float m11, float m12, float m13, float m14,\r
- float m21, float m22, float m23, float m24,\r
- float m31, float m32, float m33, float m34\r
- )\r
- {\r
- const float* table[] =\r
- {\r
- &m11, &m12, &m13, &m14,\r
- &m21, &m22, &m23, &m24,\r
- &m31, &m32, &m33, &m34\r
- };\r
- for (size_t i = 0; i < size(); ++i) {\r
- elements_[i] = *table[i];\r
- }\r
- }\r
- \r
- //}}}\r
- //{{{ copy constructor\r
- matrix3(const matrix3& rhs)\r
- {\r
- for (size_t i = 0; i < size(); ++i) {\r
- elements_[i] = rhs.elements_[i];\r
- }\r
- }\r
- //}}}\r
- //{{{ operator =\r
- /**\r
- * @note コピーのパフォーマンスのためにこの関数の定義は重要\r
- */\r
- matrix3& operator = (const matrix3& rhs)\r
- {\r
- for (size_t i = 0; i < size(); ++i) {\r
- elements_[i] = rhs.elements_[i];\r
- }\r
- return *this;\r
- }\r
- //}}}\r
- };\r
- \r
- }// namespace math\r
- }// namespace mof\r
+ #pragma once
+ #include <mof/math/basic_matrix.hpp>
+
+ namespace mof
+ {
+ namespace math
+ {
+ class vector3;
+
+ /**
- * @brief 3次元同次座標変換行列クラス
++ * @brief 3次å\85\83å\90\8c次座æ¨\99å¤\89æ\8f\9bè¡\8cå\88\97ã\82¯ã\83©ã\82¹
+ */
+ class matrix3 : public basic_matrix<3, matrix3, vector3>
+ {
+ public:
+ //{{{ constructor
+ /**
- * @brief デフォルトコンストラクタ
- * @note 効率のため,初期化は行われない
++ * @brief ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\82³ã\83³ã\82¹ã\83\88ã\83©ã\82¯ã\82¿
++ * @note å\8a¹ç\8e\87ã\81®ã\81\9fã\82\81ï¼\8cå\88\9dæ\9c\9få\8c\96ã\81¯è¡\8cã\82\8fã\82\8cã\81ªã\81\84
+ */
+ matrix3()
+ {
+ }
+
+ /**
- * @brief 指定した値で初期化する.
- * @tparam T 配列型(operator[]をオーバーロードしていること)
- * @param[in] arr 初期化用配列
++ * @brief æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81§å\88\9dæ\9c\9få\8c\96ã\81\99ã\82\8bï¼\8e
++ * @tparam T é\85\8då\88\97å\9e\8bï¼\88operator[]ã\82\92ã\82ªã\83¼ã\83\90ã\83¼ã\83ã\83¼ã\83\89ã\81\97ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ï¼\89
++ * @param[in] arr å\88\9dæ\9c\9få\8c\96ç\94¨é\85\8då\88\97
+ */
+ template <class T>
+ explicit matrix3(const T& arr)
+ {
+ for (size_t i = 0; i < size(); ++i) {
+ elements_[i] = arr[i];
+ }
+ }
+
+ /**
- * @brief 指定した値で初期化する.
++ * @brief æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81§å\88\9dæ\9c\9få\8c\96ã\81\99ã\82\8bï¼\8e
+ */
+ matrix3
+ (
+ float m11, float m12, float m13, float m14,
+ float m21, float m22, float m23, float m24,
+ float m31, float m32, float m33, float m34
+ )
+ {
+ const float* table[] =
+ {
+ &m11, &m12, &m13, &m14,
+ &m21, &m22, &m23, &m24,
+ &m31, &m32, &m33, &m34
+ };
+ for (size_t i = 0; i < size(); ++i) {
+ elements_[i] = *table[i];
+ }
+ }
+
+ //}}}
+ //{{{ copy constructor
+ matrix3(const matrix3& rhs)
+ {
+ for (size_t i = 0; i < size(); ++i) {
+ elements_[i] = rhs.elements_[i];
+ }
+ }
+ //}}}
+ //{{{ operator =
+ /**
- * @note コピーのパフォーマンスのためにこの関数の定義は重要
++ * @note ã\82³ã\83\94ã\83¼ã\81®ã\83\91ã\83\95ã\82©ã\83¼ã\83\9eã\83³ã\82¹ã\81®ã\81\9fã\82\81ã\81«ã\81\93ã\81®é\96¢æ\95°ã\81®å®\9a義ã\81¯é\87\8dè¦\81
+ */
+ matrix3& operator = (const matrix3& rhs)
+ {
+ for (size_t i = 0; i < size(); ++i) {
+ elements_[i] = rhs.elements_[i];
+ }
+ return *this;
+ }
+ //}}}
+ };
+
+ }// namespace math
+ }// namespace mof