問題タブ [transformation-matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
46 参照

opengl - 3D Cube OpenGL - カメラが動いたときにキューブの側面はどのように表示されますか?

3 つの行列を組み合わせた YouTube のチュートリアルに従っていますprojectionMatrix * viewMatrix * transformationMatrix。これらにより、シーンを制御するカメラとともに 3D キューブをレンダリングできます。私の質問は、キューブがカメラの動きによって中心からずれている場合、 これらのマトリックス/マトリックスは下のキューブの側面をどのように表示するのですか?カメラが左にパンした

カメラが左にパンした

カメラが X 軸上を移動するとき、立方体の左側を表示するのはどの行列ですか? 頂点が (z 軸上で) 離れているほど、動きの影響が少なくなるため、前の頂点が移動して後ろの頂点が明らかになるためでしょうか。以下のように? ここに画像の説明を入力

射影行列は、立方体の側面が遠くの頂点で小さくなることに関係している可能性があることを理解しています。また、フロントクワッドは歪んでいないのでキューブが回転しているとは思えません。私の理論は、変換行列が頂点をさらに遅れさせているため、明らかにされているということです。

0 投票する
1 に答える
982 参照

lua - 3Dで変換行列を使用してZ軸を中心に回転するには?

Lua では、単位行列を設定しました。

これは、x=100、y=0、z=0 の点を含むように更新されます。

次に、回転値をラジアンで 90 度として定義します。

これから、Z 軸回転行列を作成します。

ここから、行列乗算を使用して Z 軸回転行列を {100,0,0} ポイントに適用します。

行列の乗算は RosettaCode.org から取得されます: https://rosettacode.org/wiki/Matrix_multiplication#Lua

rotatedマトリックス出力が次のようになると予想していました。

あるいは、左利き (?) の計算では、Y 値は -100 になります。私が実際に最終的に得られるのは次のとおりです。

誰かが私が間違っていることを教えて、私のコードを修正してもらえますか?

0 投票する
1 に答える
1283 参照

c++ - QVector2D - 回転

コードを Python 3 から Qt に移植しています (ベクトル、多角形、線分などに独自のクラスを使用し、交差および内積、ノルム、交差、多角形チェックのポイントなどに関連するさまざまな操作を含みます)。 5.7.

Python では、理解を深めるためにすべての計算を手動で行いました。アルゴリズムを Qt C++ に移植しているので、ベクトルを回転させたり、変換したりする機能などのベクトルに関しては、Qt が少なくとも基本的なもの (クロス積とドット積を超えて) を提供することを望んでいました。私が見ているものには欠けているものがあります...たくさん。

非推奨と思われるがありQMatrix4x4ます (Qt 4.8 のドキュメントでしか見つけることができませんでした)。ローテーションで見つけたのはQTransform::rotate(...) だけです。ただし、これは座標系を回転させるためのものです。数学的には、アルゴリズムをこの方法に適応させることができますが、任意の点を中心に回転し、原点に変換し回転し、最後に変換を反転するという規則に従って、アルゴリズムを適用することをお勧めします。

私は何かが欠けていますか、それともこれは本当に利用できませんかQVector2D(2Dを3Dベクトルに簡単に変換できるのでチェックQVector3Dしました(クロス積の関数を使用したい場合はこれが必要です:D))?

注:ここでは QML の使用はオプションではありません。すべてが C++ のみである必要があります。

0 投票する
1 に答える
1283 参照

python - SimpleITK: 逆変換を適用

最近、画像の登録に SimpleITK を使い始めました。現在のプロジェクトでは、X 線画像と CT 画像を登録し、X 線画像でトレースされた ROI マスクに逆行列を適用する必要があります。

次の行で逆行列を取得しました。

ROI マスクに変換を適用するにはどうすればよいですか?

0 投票する
0 に答える
173 参照

matlab - 座標への幾何変換行列の適用

幾何学的変換行列を座標のリストに適用したい:

たとえば、A と B の 2 つの画像があります。MATLAB アプリ 'Registration estimator' を使用して、A (動画) を B (固定画像) に登録し、変換行列 T を取得しました。

これで、画像 A の座標のリストがあり、登録された画像の変換された座標を取得したいと考えています。私は何をすべきか?変換行列で座標を直接掛けるとうまくいかないようです。

たとえば、画像 A は 200*300 ピクセルで、画像 B は 210*290 ピクセルです。変換行列を画像Aの座標で直接乗算すると、計算された座標もAの座標系に対応しますが、Bの座標系には対応しません。私が欲しいのは、Bの座標系の下の座標です.

0 投票する
0 に答える
156 参照

machine-learning - 動的バッチサイズによるバッチ行列乗算

バッチ行列乗算を使用して手順を書いていますが、一般的な設定ではない可能性があります。次の入力を検討しています。

そして、望ましい出力は次のとおりです。

実際、pytorch では非常に便利で、たった 1 行です!

ここで、この手順を改善したいと思います。A[idx]を使用してポイントごとに 1 つの行列 A_i を複製しているので、ここで torch.bmm() 関数を使用できることに注意してください (1 ポイント <-> 1 行列)。Afaik、それはA[idx] の中間表現のためにメモリを割り当てる必要があります。一般に、データ バッチに BN オブジェクトがある場合、A[idx] のサイズ = (B1+...+BN)*3*3 となり、非常に大きくなる可能性があります。

したがって、行列 A_i の複製を回避できるかどうか疑問に思っています。

Batch Mat に関して以前に寄せられたほとんどの質問を見つけました。マルチ。固定バッチ サイズのみを想定します。ここで私のものと同じ質問がされ、テンソルフローでの解決策が提供されました。ただし、ソリューションは tf.tile() を使用して実装されており、これも行列を複製しています。


要約すると、私の質問は、次のことを達成しながら、バッチ行列乗算についてです。

ここでは pytorch を使用していますが、他の実装も受け入れます。入力 (乗算する行列、A など) を他の構造体で表現することも、結果としてメモリ効率が向上する場合は受け入れます。