Main Content

任意の軸の周りの回転

この例では、任意の軸の周りにオブジェクトを回転する方法を説明します。

回転を行う前の原点への平行移動

回転は原点を中心に行われます。このため、回転用の軸が一時的に原点に移動するよう、平行移動を行う必要があります。回転変換行列の適用後に、オブジェクトを元の位置に平行移動します。

表面の回転

この例では、表面を 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;