Home > リソース > MBDynチュートリアル > 13.行列および回転行列を定義する色々な方法
MBDynチュートリアル

13.行列および回転行列を定義する色々な方法

bodyの慣性行列、structural nodeの姿勢など、入力ファイルの中で行列や回転行列を定義する場面は数多くあります。MBDynには、行列や回転行列を定義する色々な方法が用意されています。本項ではこれらの方法をまとめて紹介します。

3×3行列

(1) 一般

   matr, <a11>, <a12>, <a13>, <a21>, <a22>, <a23>, <a31>, <a32>, <a33>
mat_gen

(2) 対称行列

   sym, <a11>, <a12>, <a13>, <a22>, <a23>, <a33>
mat_sym

(3) 歪対称行列

   skew, <v1>, <v2>, <v3>
mat_skew

(4) 対角行列

   diag, <a11>, <a22>, <a33>
mat_diag

(5) 単位行列

   eye
mat_eye

(6) 零行列

   null
mat_null

3×3回転行列

(1) 回転後の直行座標系の向きを2つのベクトルで指定

回転後の座標系のindex1の方向が(p1,p2,p3)、index2の方向が(q1,q2,q3)の時、

   <index1>, <p1>, <p2>, <p3>, <index2>, <q1>, <q2>, <q3>

ここでindex1およびindex2は整数1、2、または3で、それぞれx、y、zに対応します。例えば、回転後の座標系のx方向を(0.,1.,0.)、z方向を(0.,0.,1.)へ向けたい時は次のように書きます。

  1, 0., 1., 0., 3, 0., 0., 1.

2つのベクトルが正確に直行しない場合、1番目のベクトルは希望する方向を指し示し、2番目のベクトルは第3のindexの方向に垂直な平面を定めます。

特殊なケースとして、1方向だけを決めれば十分な時、例えば

   1, <p1>, <p2>, <p3>, 2, guess

などとすることが可能です。guessは1番目のベクトルに垂直なベクトルを一定の方法で自動生成します。

(2) 単位行列

   eye

「回転なし」を表します。

(3) 完全回転行列

   matr, <a11>, <a12>, <a13>, <a21>, <a22>, <a23>, <a31>, <a32>, <a33>
mat_gen

直行性のチェックは行われません。

(4) オイラー角(xyz)

   euler, <alpha>, <beta>, <gamma>

オイラー角については第7章参照。

(5) 回転ベクトル

   vector, <v1>, <v2>, <v3>

ベクトルの向きが回転軸の方向を表し、ベクトルの大きさが回転角を表します。

3×3回転行列の例

以下はすべて、z軸周り90°の回転行列を定義します。

   1, 0., 1., 0., 3, 0., 0., 1.
   
   1, 0., 1., 0., 2, -1., 0., 0.
   
   matr, cos(pi/2.), -sin(pi/2.), 0., sin(pi/2.), cos(pi/2.), 0., 0., 0., 1.
   
   euler, 0., 0., pi/2.
   
   vector, 0., 0., pi/2.