2013-08-21 11 views
5

私は回転、スケーリング、平行移動などの変換行列を知っています。私はまた、せん断変換の行列も知っています。さて、は、私は他の前述の変換の組み合わせの形でせん断matrix--基本変形の組み合わせとしてのせん断マトリックス?

[1 Sx 0] 
[0 1 0] 
[0 0 1] 

を持っている必要があります。検索を試みましたが、ブレーンストーミングを試みましたが、ストライクできませんでした。ありがとう!

+0

変換とスケーリングは、マトリックスのさまざまな要素で動作するため、シャーリングには影響しません。回転は3つの剪断で構成することができますが、その逆のことを聞いたことはありません。あなたは、おそらく質問を言い換えることができますか?なぜこの行列を他の変換から構成する必要がありますか?また、最終的な行列を作成すると、最初にどのように構成されたかを知る方法がなくなります。その結果、さまざまな組み合わせがその結果につながる可能性があります。 – user1118321

答えて

6

剪断thetaが回転に減少角度とスケールのx剪断動作は、以下:theta/2反時計回りによる

(a)に回転します。

(b)スケールx-scaling factor = sin(theta/2)およびy-scaling factor = cos(theta/2)

(c)時計回りに45 degreeで回転します。

(d)スケールx-scaling factor = sqrt(2)/sin(theta)およびy-scaling factor= sqrt(2)

3

剪断力は基本的な行列演算であるため、「他の行列演算の組み合わせ」として表すことができますが、これは本当に奇妙です。はさみは次の2つの形式をとります。

| 1 V | | 1 0 | 
| 0 1 | , | V 1 | 

ローテーション行列ははるかに関与していますが、回転を使ってせん断を表現するという考えは、あなたが実際にこれらのことを書いておらず、必要なものを見ていないことを示唆しています。 3つの特定の剪断行列のシーケンスとして構成することができる

| cos -sin | 
| sin cos | 

は、R = SxがSyのがSxのX X:今

| cos(a) -sin(a) | |  1  0 | | 1 sin(a) | |  1  0 | 
|    | = |    | x |   | x |    | 
| sin(a) cos(a) | | -tan(a/2) 1 | | 0 1 | | -tan(a/2) 1 | 

を、我々はいくつかの些細な操作を行うことができる回転行列の形式でありますSyを得るための行列操作。まず左の乗算:

 R = Sx x Sy x Sx 
Sx⁻¹ x R = Sx⁻¹ x Sy x Sx 
Sx⁻¹ x R = I x Sy x Sx 
Sx⁻¹ x R = Sy x Sx 

そして右乗算:

Sx⁻¹ x R x Sx⁻¹ = Sy x Sx x Sx⁻¹ 
Sx⁻¹ x R x Sx⁻¹ = Sy x I 
Sx⁻¹ x R x Sx⁻¹ = Sy 

を些細な書き換えのように、一せん断は現在2つの鋏と回転です。

しかし、もっと重要な質問は、なぜあなたは何か他のものとしてせん断マトリックスを表現する必要があるということです。これはすでに基本的な行列形式ですが、どのようなbizareコンピューティング環境を使っているのですか、あるいは何をやってみようとしているのですか?それは、より複雑で遅い方法として、初等変換を表現する必要がありますか? =)

として
4

これを行うことができますが、それに続いて不均一スケーリングと逆回転が行われます。詳細は第3の質問http://www.cs.cmu.edu/~djames/15-462/Fall03/assts/15-462-Fall03-wrAssign1-answer.pdfにあります。次のOpenGLコードも試してみてください。長方形を45度回転させた後、x軸で拡大縮小します。 -26度、すなわちatan(0.5)で回転する。 0.5は、x方向のスケーリング後にx軸と1辺との間の角度を求めることに由来する。

glRotatef(-26.0、0.0、0.0、1。0)。

glScalef(2,1,1);

glRotatef(45.0、0.0、0.0、1.0);

glRectf(0、0、25.0、25.0);

関連する問題