変換マトリックスの効果を逆にするにはどうすればよいですか?


14

私は最近、GLFWを介してOpenGLとC ++を使用するゲームに取り組んでいます。

ゲームでは、砲塔を搭載した飛行船があります。飛行船はワールド空間座標内を動き回り、砲塔はそれを「追従」します。

砲塔には、視線/照準の方向のための独自の座標空間があります。基本的に、砲塔が方向を目指すとき、(0,0,1)飛行船の移動方向と平行に向けられます。

タレットにワールド空間ターゲットを与えるために、ワールド空間座標を取得し、それらをタレット空間座標に変換するマトリックスがあります。

タレットが発砲すると、ワールドスペースに発射物をスポーンさせたいのですが、変換マトリックスを使用してタレットスペース座標をワールドスペースに戻すエレガントな方法はありますか?

より一般的な質問の方法は次のとおりです。空間Mから空間Aへの座標を取る行列がある場合B。使用するための簡単な方法があるMから座標を取得するBにはA

回答:


19

だから、長い行列がようMである可逆(あなたは非常に珍しい何かをやっている場合を除き、それは一般的にされる、)、そしてコンピューティング逆行列のは、Mあなたが何をしたいん行列を与えます。

つまり、M何らかの変換をinverse(M)実行する場合、「反対の」変換を実行します。

ほとんどの行列/ベクトルライブラリは、逆行列を計算する手段を提供します。


1
ボーナスの質問(あなたは答えを知っている人のように見える):非可逆変換行列は視覚的に興味深い結果を生成しますか?
user1306322 14

6
@ user1306322たぶん。あなたが値を捨てているので、より低い次元への投影(たとえば、すべてのX値をゼロにする)は、非可逆変換になります。役に立つという意味では興味深いですが、ファンキーな結果が得られるというわけではありません。「可逆性」と「視覚的に興味深い」は直交しています。
コンガスボン14

@congusbongusいや!3Dから2Dへの投影は、平面レシーバーでドロップシャドウを取得するための標準的なハックです。
イマレット14

@ user1306322 Moore–Penrose
疑似

5

変換行列が回転行列の場合、回転行列の逆行列がその行列の転置であるという事実を利用することにより、問題を単純化できます。

変換マトリックスが回転に続いて平行移動を表す場合、コンポーネントを個別に扱います。逆は、平行移動を減算してから、回転行列の転置を適用することと同じです。


2

マトリックスlibには、おそらく逆と呼ばれる関数があります。それはおそらくあなたが探しているものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.