2023/8/26 下記の計算式はとてつもなく我流のため、そーまさんの3D描画手法を前提とした上で、こちらの記事の「ロール(φ)ピッチ(θ)ヨー(ψ)で回転する場合」を参照してください。
ウディタが3.0に無事アップデートされたことにより、膨大なループ処理と自由変形を濫用するウディタ3Dの可能性がさらに広がりました。
ということでユニットの角度(θ,φ,ψ)(オイラー角というらしいです)の回転行列の計算式を導出したので共有します。下記動画のとおり動作確認済みです!
前提:XとYが平面、Zが高さ
概要:以下の3行列を上から順にかける
COSθ | SINθ | 0 |
-SINθ | COSθ | 0 |
0 | 0 | 1 |
1 | 0 | 0 |
0 | COSφ | SINφ |
0 | -SINφ | COSφ |
COSψ | 0 | -SINψ |
0 | 1 | 0 |
SINψ | 0 | COSψ |
以上の行列を計算すると回転後の各座標は以下のようになります。
X = X ( cosθcosψ + sinθsinφsinψ )
+ Y sinθcosφ
+ Z ( cosθ + sinθsinφcosψ )
Y = X ( -sinθcosψ + cosθsinφsinψ )
+ Y cosθcosφ
+ Z ( sinθsicψ + cosθsinφcosψ )
Z = X cosφsinψ
+ Y ( -sinφ )
+ Z cosφcosψ
三角関数はウディタのデフォ機能で1000倍されているので、乗じた後は/1000する必要があることにご留意ください。また、実数計算にした方が良いかもしれません。
なお筆者はド文系なので数学的な定義等を一切把握していない点にもご留意ください。
以下実際の計算式です。改良できる方はアドバイスいただけると嬉しいです!
Comments