任意の軸の周りの回転
この例では、任意の軸の周りにオブジェクトを回転する方法を説明します。
回転を行う前の原点への平行移動
回転は原点を中心に行われます。このため、回転用の軸が一時的に原点に移動するよう、平行移動を行う必要があります。回転変換行列の適用後に、オブジェクトを元の位置に平行移動します。
表面の回転
この例では、表面を Y 軸の周りに回転させる方法を説明します。
表面と変換の作成
表面を変換オブジェクトの子オブジェクトにします。
t = hgtransform; surf(peaks(40),'Parent',t) view(-20,30) axis manual
変換の作成
表面を Y 軸の周りに -15 度回転させる回転行列を設定します。
ry_angle = -15*pi/180;
Ry = makehgtform('yrotate',ry_angle);
t.Matrix = Ry;
これにより、表面が、原点を通る Y 軸の周りを -15 度回転しました。
表面の平行移動と回転
x = 20 の点を通る Y 軸の周りに表面を回転させます。
2 つの平行移動行列を作成します。1 つは x 方向に -20 単位平行移動し、もう 1 つは 20 単位逆方向に平行移動します。2 つの平行移動行列を回転行列と正しい順序で結合して、変換を作成します。
Tx1 = makehgtform('translate',[-20 0 0]); Tx2 = makehgtform('translate',[20 0 0]); t.Matrix = Tx2*Ry*Tx1;