すべての座標が正の他のすべての軸に対して 45° の角度で原点 O(0,0,0) を指すようにカメラを設定する際に問題があります (もちろん、同じ値を持つ必要があります)。私が持っている最も近い画像で見ることができます
ただし、ご覧のとおり、ここでは値が負であるため、カメラは平面x
の反対側にあります。YZ
完全なコンパイル可能なプロジェクトは、このリビジョンの gist にあります。
関連する行列の乗算は次のとおりです。
osg::Matrixd rotate_x(
1.0, 0.0, 0.0, 0.0,
0.0, q_cos, -q_sin, 0.0,
0.0, q_sin, q_cos, 0.0,
0.0, 0.0, 0.0, 1.0
);
osg::Matrixd rotate_y(
q_cos, 0.0, q_sin, 0.0,
0.0, 1.0, 0.0, 0.0,
-q_sin, 0.0, q_cos, 0.0,
0.0, 0.0, 0.0, 1.0
);
camera_pos = camera_pos * rotate_x;
camera_pos = camera_pos * rotate_y;
ファイルでSimple.cpp
。
これがどのように機能するかを理解しようとしています(数学的にもプログラム的にも)。openscenegraph にできるだけ依存しないソリューションを好みますが、最初は自分で数学を実行して、それがどのように機能するかを実際に把握したいので、数学側にもっと依存します。したがって、基本的な線形代数の大学のコースでは教えられていない四元数やその他の高度なものはまだありません。