Quaternion クオータニオン メモ

ロボットポータル
https://qiita.com/carpenders/items/1a653b1ca831547c92d3
### クォータニオンからオイラー角
番号はEulerAngles.{cpp,h}の実装を示す
1 https://mtkbirdman.com/unity-quaternion-euler
2 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12246836467
3 https://www.kazetest.com/vcmemo/quaternion/quaternion.htm
4 https://qiita.com/edo_m18/items/5db35b60112e281f840e 以下が類似
https://it-lives-vainly.hatenablog.com/entry/20070829/1188384519
5 https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Quaternion_to_Euler_angles_(in_3-2-1_sequence)_conversion
11 https://qiita.com/aa_debdeb/items/abe90a9bd0b4809813da

* https://qiita.com/yaegaki/items/7b6b1f487553def8e647 の元は以下
https://qiita.com/aa_debdeb/items/abe90a9bd0b4809813da
* https://scrapbox.io/bsgjapancom-28777692/Lua%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%EF%BC%9A%E6%96%B0%E3%82%AF%E3%82%A9%E3%83%BC%E3%82%BF%E3%83%8B%E3%82%AA%E3%83%B3%E3%81%8B%E3%82%89%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E8%A7%92%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B の元は以下
https://qiita.com/edo_m18/items/5db35b60112e281f840e ...(4)
* https://scrapbox.io/bsgjapancom-28777692/%E3%82%AF%E3%82%A9%E3%83%BC%E3%82%BF%E3%83%8B%E3%82%AA%E3%83%B3%E3%81%8B%E3%82%89%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E8%A7%92%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B_(lua) の元は以下
https://qiita.com/segur/items/1772f0b842bfabab3c6e の元は以下
https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Quaternion_to_Euler_angles_(in_3-2-1_sequence)_conversion ...(5)
* https://teratail.com/questions/329119?sort=3 の元は以下
https://qiita.com/segur/items/1772f0b842bfabab3c6e の元は以下
https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Quaternion_to_Euler_angles_(in_3-2-1_sequence)_conversion ...(5)

### 回転行列からオイラー角
https://programming-surgeon.com/script/euler-angle/
https://www.kazetest.com/vcmemo/euler2rotationmatrix/euler2rotationmatrix.htm

### クォータニオン
https://qiita.com/drken/items/0639cf34cce14e8d58a5 全般
https://kumadasu.com/2017/09/20/ 全般 回転の差分
https://qiita.com/aa_debdeb/items/3d02e28fb9ebfa357eaf 相互変換
https://qiita.com/aa_debdeb/items/abe90a9bd0b4809813da 相互変換実装
http://marupeke296.sakura.ne.jp/DXG_No58_RotQuaternionTrans.html 相互変換、オイラー角無し
https://risalc.info/src/quaternion-rotation.html イマイチ
http://www.info.hiroshima-cu.ac.jp/~miyazaki/knowledge/tech0052.html MtoQ
https://lipoyang.hatenablog.com/entry/2020/03/26/082622 イマイチ
https://kamino.hatenablog.com/entry/rotation_expressions イマイチ
https://www.mesw.co.jp/business/report/pdf/mss_18_07.pdf
https://zenn.dev/mebiusbox/books/132b654aa02124/viewer/2966c7 数式説明 加減算
https://stacstar.jp/blog/?p=53 イマイチ
https://www.kazetest.com/vcmemo/quaternion/quaternion.htm クォータニオンからオイラー角
https://it-lives-vainly.hatenablog.com/entry/20070829/1188384519 回転行列からオイラー角
### 回転行列 クォータニオン 変換 c++
https://gist.github.com/AtsushiSakai/5175898 Eigen使用
https://w.atwiki.jp/opengl/pages/148.html 相互変換 ４元数線形補間
https://www2.sonycsl.co.jp/person/nielsen/visualcomputing/programs/rotation-by-quaternion.cpp QtoM
https://www.flipcode.com/documents/matrfaq.html 相互変換 Q54 Q55
### クォータニオン 球面線形補間
https://yuki-koyama.hatenablog.com/entry/2013/01/19/163421
https://edom18.hateblo.jp/entry/2018/06/25/084023
http://blog.livedoor.jp/tek_nishi/archives/8623876.html 使用例
https://www2.sonycsl.co.jp/person/nielsen/visualcomputing/programs/slerp.cpp 実装
Eigen\src\Geometry\Quaternion.h slerp実装
### Windows版クォータニオン
四元数構造
https://learn.microsoft.com/ja-jp/windows/win32/numerics_h/quaternion-structure
### Eigen
http://modeling-lab.pinoko.jp/programming/eigen.html 入門
https://www.regentechlog.com/2018/12/09/eigen-note/ 注意点
https://www.insilico.jp/blog/2022/05/08/lalibrary_eigen_part1/ 入門
https://stackoverflow.com/questions/60758298/eigenmatrixdouble-4-4-to-eigenquaterniond Eigen::Quaterniondは3x3行列から変換
https://gist.github.com/AtsushiSakai/5175898 Eigen使用例
https://lilaboc.work/archives/19488603.html Eigen使用例
http://blog.livedoor.jp/tek_nishi/archives/8623876.html Eigen使用例 良い
https://kukku2123.hatenablog.com/entry/2018/01/17/180000 Eigen使用例 良い
https://www.cc.gatech.edu/classes/AY2015/cs4496_spring/Eigen.html Eigen使用例
https://qiita.com/vs4sh/items/7e8bc95250db8d88bc41 Eigen使用例
https://stackoverflow.com/questions/8443102/convert-eigen-matrix-to-c-array Eigen配列
https://eigen.tuxfamily.org/dox/group__TopicStorageOrders.html 本家StorageOrder
http://ankokudan.org/d/dl/pdf/pdf-eigennote.pdf
https://stackoverflow.com/questions/21761909/eigen-convert-matrix3d-rotation-to-quaternion QtoM
https://myenigma.hatenablog.com/entry/20130719/1374304154 QtoEulerAngles
メモリの使い方を自分で調査
```
static void verifymatrix()
{
	size_t i;
	Eigen::Matrix2i aaa{ {1,2},{3,4} }; // colum major
	for (i = 0; i < 4; i++) {
		static const int ary1[] = { 1,3,2,4 };
		VERIFY(ary1[i] == *(aaa.data() + i));
	}
	VERIFY(aaa(0, 0) == 1);
	VERIFY(aaa(0, 1) == 2);
	VERIFY(aaa(1, 0) == 3);
	VERIFY(aaa(0) == 1);
	VERIFY(aaa(1) == 3);
	VERIFY(aaa(2) == 2);
	Eigen::Matrix2i bbb;
	bbb << 1, 2, 3, 4; // colum major
	for (i = 0; i < 4; i++) {
		static const int ary1[] = { 1,3,2,4 };
		VERIFY(ary1[i] == *(bbb.data() + i));
	}
	VERIFY(bbb(0, 0) == 1);
	VERIFY(bbb(0, 1) == 2);
	VERIFY(bbb(1, 0) == 3);
	VERIFY(bbb(0) == 1);
	VERIFY(bbb(1) == 3);
	VERIFY(bbb(2) == 2);
	Eigen::Matrix<int, 2, 2, Eigen::RowMajor> ccc; // row major
	ccc << 1, 2, 3, 4;
	for (i = 0; i < 4; i++) {
		static const int ary1[] = { 1,2,3,4 };
		VERIFY(ary1[i] == *(ccc.data() + i));
	}
	VERIFY(ccc(0, 0) == 1);
	VERIFY(ccc(0, 1) == 2);
	VERIFY(ccc(1, 0) == 3);
	VERIFY(ccc(0) == 1);
	VERIFY(ccc(1) == 2);
	VERIFY(ccc(2) == 3);
}
```