Python♪FEM:コードアングルから方向余弦を求める(その2)

全体座標系のZ軸と部材座標系のx軸が平行である場合の方向余弦の式を求めます。図を見ながら順を追って考えれば、それほど難しい計算ではありません。(その1)では、平行でない場合の方向余弦の式を説明しましたので、その続編です。

理解しにくいところがある場合には、以下の記事を参考にしてください。

Python♪FEM:3次元FEMの右手座標系と右ネジの方向
Python♪FEM:コードアングルを詳しく図解
Python♪FEM:空間ベクトルの外積と内積
Python♪FEM:コードアングルから方向余弦を求める(その1)

0. FEMなど数値解析シリーズ

この記事は「FEMなど数値解析シリーズ」の記事です。一連の記事は、以下のリンク集を参照してください。

Python♪FEMなど数値解析シリーズ

1.部材座標系x軸の全体座標軸に対する方向余弦

部材全体座標系のx軸は、平行でない場合と同様に部材の0端から1端に向かう方向を正とします。つまり、部材両端の座標からx軸の向きを求めることができます。

下図の左側は1端のZ座標が0端よりも大きい場合、右側は0端のZ座標が1端よりも大きい場合です。

部材座標系x軸の全体座標系に対する方向余弦

x軸に平行な単位ベクトルexは(0, 0, 1)あるいは(0, 0, -1)なのですが、プログラムでは、最初から全体Z軸と部材x軸が平行とは判断できません。

そこで、まず、「部材全体座標系x軸と全体座標系Z軸とが平行な場合」と同じ式(下式)を用いて計算します。

平行であれば、lx , mxは「ほぼ0」、nxは「ほぼ1」あるいは「ほぼ-1」の値となります。「ほぼ」と表現したのはプログラムの少数計算では小さな誤差が生じる可能性があるからです。

プログラム上でのexの計算

数学的には誤差はないので、ex=(0, 0, nx)です。なお、nxは上式で求めますが、1あるいは-1です。

数学的なexの計算

2.部材座標系のy'軸正向きの単位ベクトル

さて、部材座標系のy'軸を求める前に、「部材全体座標系x軸が全体座標系Z軸と平行ではない場合」を復習します。下図のy'軸は全体座標系のXY平面に並行であり、0端を通り、x軸に垂直な平面P上にある直線です。したがって、y'軸x軸と平行なベクトル(ex)と垂直であり、xy平面の法線ベクトルGeZ(0,0,1)とも垂直です。

つまり、y'軸に平行なベクトルv'yexGeZの外積により求めることができます。

平行でない場合のyダッシュ軸の図

しかし、「部材全体座標系x軸が全体座標系Z軸と平行な場合」は、「平行でない場合」のようにGeZ=(0, 0, 1)とexの外積から、e'yを求めることができません。GeZ=(0, 0, 1)とexの外積は(0, 0, 0)になってしまいます。

平行の場合はyダッシュは外積で求められない

そこで、無条件で部材座標系z'軸を全体座標系Y軸に一致させるものとします。なお、部材座標系のx軸は部材の0端から1端に向かう方向を正とします。

zダッシュは無条件で方向を決める

つまり、部材座標系のz'軸正向きの単位ベクトルe'zは全体座標系の座標で(0, 1, 0)です。

eダッシュzの値

方向余弦の計算で出てくるベクトルの要素は全て全体座標系で表現しますので、以後、座標系を混同しないようにしてください。

3.部材座標系のz'軸正向きの単位ベクトル

exe'zが決まれば、部材座標系のe'yexe'zの外積で求めることができます。

ただし、外積の計算ではベクトルの順序に注意しなければなりません。e'z×exの順番で外積を求める必要があり、ex×e'zでは符号が逆になってしまいます。

なお、exe'zは単位ベクトルであり、互いに垂直なので、外積e'yの長さも1です。

eダッシュyの図
eダッシュyの値

※上式の色は外積計算の順序を示すものなので、他の図の色とは関係がありません。

外積や内積について分かりにくい場合には以下の記事を参考にしてください。

Python♪FEM:空間ベクトルの外積と内積

4.部材座標系のx軸を中心に右ねじの方向に回転

最後に部材座標系のx軸を中心として右ネジの方向にθrad.回転させます。

x軸回りに回転の図

下図は部材の材軸方向から見た「部材座標系のy軸, z軸」と「全体座標系のX軸, Y軸」の関係です。

x軸回りに回転をx軸方向から見た図

回転後のy, z軸上の単位ベクトルey, ezは、回転前のe'y, e'z回転させて求めるのではなく、まず、ey, ezy', z'軸上に分解し、分解したベクトルの和によって求めます。(下図参照)

eyとezはベクトルの和

これを式にすると、下式を導くことができます。

eyの算定式

ここで、

eyの算定式のここで

ezについても同様に

ezの算定式

ここで、

ezの算定式のここで

以上で、コードアングルを用いた方向余弦の式を全て導き出すことができました。

5.まとめ

最後に、全体座標系の座標(GX, GY, GZ)を、部材座標系の座標(x, y, z)に変換する座標変換マトリクスと、部材座標軸の全体座標軸に対する方向余弦を列記します。

(1) 座標変換マトリクス

全体座標系の座標(GX, GY, GZ)を、部材座標系の座標(x, y, z)に変換する座標変換マトリクスです。

部材座標系から全体座標系への座標変換マトリクス

(2) 部材座標系x軸の全体座標軸に対する方向余弦

exの算定式

ただし、上式の計算結果は下式となる。

exの算定式の計算結果

(3) 部材座標系y軸の全体座標軸に対する方向余弦

eyの算定式

(3) 部材座標系z軸の全体座標軸に対する方向余弦

ezの算定式

以上、方向余弦の結果だけ必要な場合に参照してください。

私が実際に購入した教材のご紹介

以下、私が実際に購入したPythonの教材をまとめてみました。 Pythonを学習する上で、少しでもお役に立つことができればうれしいです。

Python♪私が購入したPythonの書籍のレビュー
UdemyのPythonの動画講座を書籍を買う感覚で購入してみた

その他

Twitterへのリンクです。SNSもはじめました♪

以下、私が光回線を導入した時の記事一覧です。
 (1) 2020年「光回線は値段で選ぶ」では後悔する ←宅内工事の状況も説明しています。
 (2) NURO光の開通までWiFiルーターを格安レンタルできる
 (3) NURO光の屋外工事の状況をご紹介。その日に開通!
 (4) 光回線開通!実測するとNURO光はやっぱり速かった
 (5) ネット上のNURO光紹介特典は個人情報がもれないの?