ビュー関数A
から次のように取得された MATLAB の 4x4 ビュー マトリックスとします。
A = view;
A(1:3,1:3)
は、回転とスケーリングに
A(1:3,4)
対応し、平行移動に対応し、
A(4,:)
単純に である必要があります[0 0 0 1]
。
カメラ パラメータを次の単純なシナリオに設定する場合:
camproj('orthographic')
set(gca, 'CameraPosition', [0,0,0])
set(gca, 'CameraTarget', [0,0,1])
set(gca, 'CameraUpVector', [0,1,1])
それA = view
は次のとおりです。
-1 0 0 0.5
0 1 0 -0.5
0 0 1 -0.5
0 0 0 1
0.5 がどこから来ているのかわかりません。カメラの位置を [0,0,0] に設定したので、移動はありません。
別の特徴として、次のようにカメラの位置を [0,0,10] に設定します。
set(gca, 'CameraPosition', [0,0,10])
その結果、A:=view マトリックスは次のようになります。
1 0 0 -0.5
0 1 0 -0.5
0 0 -1 5.5
0 0 0 1
-0.5 が 5.5 インチに変更されたことに気付きました。これは、 A(3,4)
5 = 10 / 2 と関係があります。
つまり、カメラの位置を [0,0,a] に変更すると、ビュー マトリックスA(3,4)
がおよそで変更されますa / 2
。
これは...変ですか?独特?奇数?
更新:さらに別の特殊性は、A(1:3,1:3) の行列式が -1 であることですが、回転行列の場合は 1 である必要があります。-1 の場合は、回転だけでなく反射も意味します。なぜ反省が必要なのですか?