'①もっと短くなりますか?
'②vbaのworksheet.function.minverseでfunctionの書き換えを探しています。
'XY座標変換,座標変換(移動、回転),二点法変換,2点間変換(または、へルマート変換)
'http://d.hatena.ne.jp/Zellij/touch/20120523/p1
'(参考)アフィン変換/平行移動だって変換行列で
'http://qiita.com/yuba/items/7fb6a49adfda8fa466d8
'(参考)Excelの計算式をテキストファイルに出力してみた
'以下Excelのデータ説明
'関数の入力時,Ctrl+Shift+Enterが必要です。
'設定データ:座標系1(0,0)→座標系2(0,1)-----------------------------------
1行 1列目: 0
1行 2列目: 0
1行 3列目: 0
1行 4列目: 1
'設定データ:座標系1(1,0)→座標系2(0,0)-----------------------------------
2行 1列目: 1
2行 2列目: 0
2行 3列目: 0
2行 4列目: 0
'cos,sin,tx,tyの計算------------------------------------------------------
4行 1列目: =A1
4行 2列目: =-B1
4行 3列目: 1
4行 4列目: 0
4行 6列目: =MINVERSE(A4:D7)
4行 7列目: =MINVERSE(A4:D7)
4行 8列目: =MINVERSE(A4:D7)
4行 9列目: =MINVERSE(A4:D7)
4行 11列目: =C1
4行 13列目: =MMULT(F4:I7,K4:K7)
'
5行 1列目: =B1
5行 2列目: =A1
5行 3列目: 0
5行 4列目: 1
5行 6列目: =MINVERSE(A4:D7)
5行 7列目: =MINVERSE(A4:D7)
5行 8列目: =MINVERSE(A4:D7)
5行 9列目: =MINVERSE(A4:D7)
5行 11列目: =D1
5行 13列目: =MMULT(F4:I7,K4:K7)
'
6行 1列目: =A2
6行 2列目: =-B2
6行 3列目: 1
6行 4列目: 0
6行 6列目: =MINVERSE(A4:D7)
6行 7列目: =MINVERSE(A4:D7)
6行 8列目: =MINVERSE(A4:D7)
6行 9列目: =MINVERSE(A4:D7)
6行 11列目: =C2
6行 13列目: =MMULT(F4:I7,K4:K7)
'
7行 1列目: =B2
7行 2列目: =A2
7行 3列目: 0
7行 4列目: 1
7行 6列目: =MINVERSE(A4:D7)
7行 7列目: =MINVERSE(A4:D7)
7行 8列目: =MINVERSE(A4:D7)
7行 9列目: =MINVERSE(A4:D7)
7行 11列目: =D2
7行 13列目: =MMULT(F4:I7,K4:K7)
'変換行列の表示------------------------------------------------------------
9行 1列目: =M4
9行 2列目: =-M5
9行 3列目: =M6
'
10行 1列目: =M5
10行 2列目: =M4
10行 3列目: =M7
'
11行 1列目: 0
11行 2列目: 0
11行 3列目: 1
'入力データ1:座標系1(0,0)→出力データ座標系2(x,y)---------------------------
13行 1列目: 0
13行 2列目: 0
13行 3列目: 1
13行 5列目: =TRANSPOSE(MMULT($A$9:$C$11,TRANSPOSE(A13:C13)))
13行 6列目: =TRANSPOSE(MMULT($A$9:$C$11,TRANSPOSE(A13:C13)))
13行 7列目: =TRANSPOSE(MMULT($A$9:$C$11,TRANSPOSE(A13:C13)))
'入力データ2:座標系1(0,1)→出力データ座標系2(x,y)---------------------------
14行 1列目: 1
14行 2列目: 0
14行 3列目: 1
14行 5列目: =TRANSPOSE(MMULT($A$9:$C$11,TRANSPOSE(A14:C14)))
14行 6列目: =TRANSPOSE(MMULT($A$9:$C$11,TRANSPOSE(A14:C14)))
14行 7列目: =TRANSPOSE(MMULT($A$9:$C$11,TRANSPOSE(A14:C14)))