名称 | ・・・・・・・ |
変換マトリックスの合成 |
|||
ルーチン名 | ・・・・・・・ |
transMat |
|||
スクリプトNo | ・・・・・・・ | sub_set02- 009 | |||
file名 | ・・・・・・・ | ScriptSet02.lzh sub_set02のページからセットごとダウンロードしてください。 |
|||
概略 | ・・・・・・・ |
2つの変換マトリックスを合成した変換マトリックスを返す。 |
|||
|
|||||
使用前提 | ・・・・・・・ |
戻り値を受け取る通常のバリアント変数(配列では無く)を宣言して用意しておく。 |
|||
依存関係 | ・・・・・・・ |
特になし |
|||
引数説明 | ・・・・・・・ |
mat1 |
(in)最初の変換マトリックス 配列[mat(3,3)]形式 |
||
戻り値説明 | ・・・・・・・ |
4行4列の合成変換マトリックス 配列[mat(3,3)]形式 |
|||
変数説明 | ・・・・・・・ |
newMat(3,3) |
:マトリックスを保持する変数 |
||
注意点 | ・・・・・・・ |
最初の引数の変換マトリックスに次の引数の変換マトリックスをかける。 |
|||
スクリプト | |||||
'--変換マトリックスの合成 Function transMat(mat1,mat2) '2つの変換マトリックスを合成する。Mat1をMat2で変換する '戻値--4行4列の合成変換マトリックス 配列[mat(3,3)]形式 '引数-- ' mat1 :(in)最初の変換マトリックス 配列[mat(3,3)]形式 ' mat2 :(in)次の変換マトリックス 配列[mat(3,3)]形式 Dim newMat(3,3) ':マトリックスを保持する変数 Dim i,j,k ':カウンタ用変数 for i=0 to 3 for j=0 to 3 newMat(i,j)=0 for k=0 to 3 newMat(i,j)=newMat(i,j)+mat1(i,k)*mat2(k,j) next next next transMat=newMat End Function |
|||||
使用例 | |||||
'複合変換テスト '線形状が入っているパートを選択して実行してください 'Y軸を中心にπ/3回転、X軸を中心にπ/3回転したものを平行移動する。 '角度の単位はラヂアンです。 dim mat0 dim Dt(2),Angle Dt(0)=100: Dt(1)=100: Dt(2)=100 Angle=XShade.pi/3 mat0=GetTransMat() mat0=transMat(mat0,RoteMatY(Angle)) mat0=transMat(mat0,RoteMatX(Angle)) mat0=transMat(mat0,MoveMat(Dt)) applyTransMat(mat0) |