問題タブ [rotational-matrices]

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 投票する
1 に答える
1255 参照

android - float[] を android.graphics.Matrix に変換します

Android アプリケーションを開発しており、9 要素の float 配列を android.graphics.Matrix 型のオブジェクトに変換する必要があります。float 配列は、SensorManager.getRotationMatrix(...) によって返される回転行列を表します。この float 配列を使用して、android.graphics.Matrix に変換し、canvas.drawBitmap(Bitmap, Matrix, Paint) で使用したいと考えています。

float 配列の値を Matrix オブジェクトに設定するにはどうすればよいですか?

前もって感謝します。

0 投票する
2 に答える
5850 参照

math - 2D 空間を時計回りに角度 'a' だけ回転する行列 A

添付の画像は、質問と私の回答を示しています。

誰かが正しいかどうか教えていただければ幸いです。ここに画像の説明を入力

0 投票する
3 に答える
22710 参照

c++ - OpenCVの回転と平行移動のベクトルをXYZ回転とXYZ位置に変換する

この質問に答えているように見えるGoogleの結果とstackoverflowの投稿がありますが、単純な事実は私がそれらを理解できないということです。どれだけ読んでも、四元数やオイラー角、ロドリゲス変換などに頭を悩ませることはできません。

OpenCVのsolvePnP()メソッドによって返される回転と平行移動のベクトルから3DグラフィックスアプリケーションにプラグインできるxyzPositionとxyzRotationの値を取得する方法を12歳のように説明してくれた人はいますか?

これは、C++の拡張現実アプリケーション用です。OpenCVパーツを起動して実行し、マーカーボードを追跡し、回転と平行移動のベクトルをグラフィックプログラムに送信していますが、その情報を使用して3Dオブジェクトのポーズをとる方法がわかりません。

私は本当にこの背後にある数学を理解したいと思います、そしてここで理論のどんな患者の説明にも感謝します。しかし、私はまた、コピー/貼り付けして別の日に理論を学ぶことができるいくつかのコードへのポインターに落ち着きます。実際、私は具体的なコードを見て理論に逆戻りすることで、このようなことをより早く学ぶようです。

編集:これがあるように...これは明らかに私を正しい方向に向けるべきですが、それは私が知っているすべての人のためのタイムマシンの計画かもしれません。高校の数学の修繕をお願いしているのではないかと思いましたが、初めてではありません。

編集:これは、solvePnP()から返される回転ベクトルと平行移動ベクトルの例です...グラフィックアプリケーションへの旅行のためにXMLに変換されます。私が見たこれらのすべてには、3つの行と1つの列が含まれていることに注意してください。

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

android - Androidで横向きの画面に合わせて幅を設定する方法(TouchImageViewを使用)

MikeOrtiz TouchImageViewFrom the GitHubを使用しています。ここにリンクがあります TouchImageView

  • 横向きの画面に合わせて幅を設定しようとしています ここでのみ、私がやりたいことを示す画像です。

  • これ欲しい

横幅が画面に収まる

  • これの代わりに、私は今ランドスケープで取得しています 横幅がスクリーンに収まらない

ここにいくつかのコードがあります。

ありがとうございました

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

ios - CMRotationMatrix の 1 つの単一軸の回転を逆にします。

ご容赦ください、私は行列計算が本当に苦手です。電話が他の姿勢に回転している間、referenceAttitude の重力で「静止」したままにしたいレイヤーがあります。現在の姿勢でmultiplyByInverseOfAttitudeを使用し、CMRotationMatrixを使用して結果のデルタを回転としてレイヤーに適用しています(ピッチ、ロール、ヨーに対して個別のCATransform3DRotatesを実行すると、軸の近くでかなりの奇抜さが生じました)。基本的には、この例のようなコードに触発されています。

これを別の変換と連結して、レイヤーに回転を適用する前に m34 遠近法のトリックを適用します。

結果はきれいで、期待どおりに機能します。単一の軸である y 軸を除いて、携帯電話を動かしてもレイヤーは重力で静止したままです。電話を平らに持って転がすと、レイヤーは静止したままではなく、電話がある方向に 2 倍回転します。

私は、multiplyByInverseOfAttitude を適用した後、この 1 つの軸が間違って移動し、他の軸が正しく移動する理由がわかりません。ピッチ、ヨー、ロールに個別の CATransform3DRotates を使用すると、ロール ベクトルに -1 を掛けることで問題を簡単に修正できましたが、それを回転行列に適用する方法がわかりません。問題は明らかに、方程式に視点を導入した場合にのみ表示されるため、おそらく私はそれを間違っています。m34 値を反転すると、ロールは修正されますが、ピッチで同じ問題が発生します。この軸の回転が後方にある理由を理解するか、マトリックスを介してその軸の回転を反転するか、何らかの方法で視点を修正する必要があります。

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

java - 3Dマトリックスを反時計回りに90度回転させるにはどうすればよいですか?

Javaで行列を反時計回りに90度回転させようとしています。2Dマトリックスでこれを行う方法についての答えを見つけましたが、私のマトリックスは3Dです。

2D回転を行う方法を私が見つけた方法は次のとおりです。

では、3Dマトリックスを回転させるにはどうすればよいですか?

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

linear-algebra - 運動から構造を計算した後の回転行列の重要性

アルゴリズムを完全に実装しましたが、回転行列がどのように機能するかについて少し混乱しています。したがって、3xP の「構造」行列で終わり、内容 (私が正しければ) は P 3D ポイントです (したがって、行は x、y、z です)。

ただし、回転行列は 2fx3 です。F は、最初に追跡された特徴点の 3 つのフレームをマトリックスにスタックするため、フレームの数です。上半分が x 座標で下半分が y 座標なので、2f です。

とにかく、結果のマトリックスはこの2fx3で、2つの回転マトリックスがあるように見えるので、通常の回転マトリックスにどのように対応するか少し混乱しています

アルゴリズムの簡単な概要は次のとおりです http://www.cs.huji.ac.il/~csip/sfm.pdf

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

matlab - 2 つの回転行列の違いを見つける

次の問題があります。オイラー角の大きな配列を回転行列に変換するコードを開発しました。私のデータは、次のような phi1、phi、および phi2 の値です。

...他にも 200 万個のデータ配列があります。

しかし、オイラー角の最初の行から形成された回転行列の逆を実行し、それを2行目から展開された行列に掛けたいと思います。次に、結果の行列の要素の 1 つを使用する必要があります。それを行う方法はありますか?

ここで、g1 は、データの 2 行目の回転行列である g2 を見つけたいデータの最初の行の回転行列です。薄くしたい

次に、結果の行列の g11 要素と g13 要素を抽出します。

データは、次のデータを含むテキスト ファイルから取得されます。

最初の 3 つの列は、使用しているテキスト ファイルからデータを抽出するためのオイラー角 phi1、phi、phi2 です。

ここで、phi1 は 1999999X1 の配列であり、同様に phi と phi2 は同じサイズの配列であり、これは後の部分で使用しています。

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

java - OpenGL 行列の乗算により、浮動小数点の動作がおかしくなる

Java用のLWJGLで書かれた基本的なOpenGLプログラムがあります。ピッチ、ヨー、ロール変数を使用するのがなぜ悪い考えなのかを読んだ後、回転行列を調べ始めたところです。ただし、行列を扱うのは難しいため、ヨー、ピッチ、ロールを取り、それらを回転行列に変換し、Modelview 行列で乗算する関数を作成しています。私のコードは次のとおりです。

まず、0, 0, 0この関数に渡しましたが、レンダリングされたシーンには影響しないと予想していました。しかし、描いていた単純な四角形が関数呼び出し後に消えてしまいました。デバッグするためにglGetFloat、以前はモデル ビュー マトリックスにアクセスして何が起こったかを確認していました。

これは、物事が奇妙になるところです(少なくとも私にとっては):関数を呼び出す前にFloatBuffer、モデルビューマトリックスを格納する取得されたものは

または、より読みやすく、

すべてが正常にレンダリングされます。

私の呼び出しの後、行列は次のようになります

私のテストスクエアが消えます。

何が起こっている?マトリックスが正しく作成されていませんか? わからないことはありglMultMatrixますか?有効または無効にする必要があるものはありますか? 通常のマトリックスに奇妙なフロートが含まれているのはなぜですか? 単位行列 (1 を含む) のはずではありませんか?

編集:

BufferUtils.createFloatBuffer(16 * Float.SIZE);の代わりに を使用すると、ByteBuffer.allocateDirect(16 * Float.SIZE).asFloatBuffer();前述のバイト順の問題がなくなり、 が期待どおり4.6006E-41になり1.0ます。ただし、行列は恒等から純粋なゼロに変換されます。

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

c# - C#で2x2回転行列を実装する

次のコードを使用してベクトルを回転します。

正規化されたベクトルに行列を掛けることができるように、2x2の行列を作成しようとしました。結果は、座標ではなく、新しい回転ベクトルになります。

回転行列

残念ながらSystem.Windows.Media.Matrix、2x2行列はサポートされていません。これまでのところ、この回転行列の実装は見つかりませんでした。これをどのように実装しますか?