LoginSignup
53
36

More than 1 year has passed since last update.

3次元座標系での様々な回転表現を相互変換したり、表示するツール

Last updated at Posted at 2022-01-12

作ったもの

  • 下記の3D回転表現に対応しています
    • 回転行列: Rotation Matrix
    • 回転ベクトル: Rotation Vector
    • Axis-angle
    • クオータニオン: Quaternion
    • オイラー角: Euler Angles (Intrinsic; Mobile)
    • 固定角: Euler Angles (Extrinsic; Fixed)
  • 入力の回転に応じて、物体がどの方向を向くかを3D空間上で表示します
  • 入力の回転を、他の全ての3D回転表現に変換します
  • GitHub
  • ブラウザで試す

実行ファイル

  • 下記リリースからご使用のOSに合わせた実行ファイルをダウンロードしてください
    • https://github.com/iwatake2222/rotation_master/releases/latest
      • Windows 10/11 64-bit: rotation_master_windows-2019_x64.zip
      • Linux (Ubuntu 20.04): rotation_master_ubuntu-20.04_x64.tgz
      • MacOS: rotation_master_macos-10.15.tgz
      • 注意
        • Windowsだと実行時にセキュリティに関する警告が出ます。信用いただけるならそのまま実行してください
        • Ubuntuの場合 apt install -y libglu1-mesa-dev mesa-common-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev が必要です
        • WSL2だとグラフィック系の問題で動作しませんでした。WSL2上のDocker(Ubuntu20.04)だと動作しました
        • MacOSだと実行時にエラーが発生するようです。自分でビルドするか、何か足りていないライブラリをインストールしたらいけるかも?
  • セキュリティが気になる場合は、自分でビルドしてください

操作方法

image.png

変換

  1. Inputエリアで、数値を変更します
    • マウスドラッグ、または、Ctrl+クリックで直接入力します
  2. 値を変更した3D回転表現が入力として自動的に選ばれますが、変えたい場合はラジオボタンをクリックしてください
  3. Converted valuesエリアに、結果が自動的に出力されます

カメラ操作

Revolutionモード

  • カメラは原点の周回を移動します。カメラは常に原点の方向を向いています
  • 右ドラッグ: カメラの位置回転
  • スクロール: カメラの前後移動 (原点からの距離変更)

Freeモード

  • カメラを自由に移動することができます
  • 右ドラッグ: カメラの回転
  • 中央ドラッグ: カメラの移動
  • スクロール: カメラの前後移動

その他

  • 画面の右側に、X, Y, Z軸それぞれから見た状態が表示されます
  • 現在の変換結果(Converted Values)を入力値(Input)に設定したい場合は、"Overwrite input values by the converted values" ボタンをクリックします

技術的な話

変換の流れ

  1. 入力値を回転行列に変換する
    • ConvertOOO2RotationMatrix
  2. 変換した回転行列から、全ての3D回転表現に変換する
    • ConvertRotationMatrix2OOO

変換関数は下記で実装されています。依存は自前の小さいMatrixクラス(2ファイル)だけなので、マイコンなどへの移植も容易だと思います。
https://github.com/iwatake2222/rotation_master/blob/master/desktop/transformation_matrix/rotation_matrix.cpp

使用技術

  • C++
  • OpenGL + GLFW + GLEW
  • Dear ImGui

Help

53
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
36