sub_set02へ戻る

名称 ・・・・・・・

アフィン変換用マトリックス(スケール変換)

ルーチン名 ・・・・・・・

ScaleMat

スクリプトNo ・・・・・・・ sub_set02- 007
file名 ・・・・・・・ ScriptSet02.lzh
sub_set02のページからセットごとダウンロードしてください。
概略 ・・・・・・・

x、y、z各方向に指定倍、拡大縮小する変換マトリックスを戻す。

使用例実行前 使用例実行後
使用前提 ・・・・・・・

戻り値を受け取る通常のバリアント変数(配列では無く)を宣言して用意しておく。

依存関係 ・・・・・・・

iniMat

:マトリックス内の要素をすべて0に初期化する(sub_set02-001)

引数説明 ・・・・・・・

Sc

(in)x、y、z各方向への拡大縮小倍率 [Sc(3)形式]

戻り値説明 ・・・・・・・

4行4列の拡大縮小変換マトリックス [mat(3,3)]形式

変数説明 ・・・・・・・

mat(3,3)

マトリックスを保持する変数

注意点 ・・・・・・・

引数のScは[Sc(2)形式]なので注意
例 x方向に0.7倍、y方向に0.5倍、z方向に1.2倍なら Sc(0)=0.7、Sc(1)=0.5、SC(2)=1.2 となる

呼び出し側では通常のバリアント変数で戻値を受ける。

 
スクリプト
'---アフィン変換用マトリックス(スケール変換)
Function ScaleMat(Sc)
'Sc方向に拡大縮小する変換マトリックスを取得する
'戻値--4行4列のスケール変換マトリックス[mat(3,3)]形式
'引数--
' Sc     :(in)x,y,z方向それぞれの拡大縮小比率[配列Sc(2)]形式

  Dim mat(3,3)      ':マトリックスを保持する変数

  call iniMat(mat)
  mat(0,0)=Sc(0)
  mat(1,1)=Sc(1)
  mat(2,2)=Sc(2)
  mat(3,3)=1
  ScaleMat=mat
End Function
使用例
'線形状が入っているパートを選択して実行してください
'拡大縮小テスト
  dim mat0
  dim Sc(2)
  mat0=GetTransMat()
  Sc(0)=0.7: Sc(1)=0.8: Sc(2)=0.9 
  mat0=transMat(mat0,ScaleMat(Sc))
  ApplyTransMat(mat0)

sub_set02へ戻る