0

入力: 2 つの多次元 (たとえば、dim=8) ベクトル a および b。

これらのベクトル a と b の間の「有向」角度 (0-Pi ではなく 0-2*Pi) を見つける必要があります。そして、それらが平行でない場合、平面 a、b でベクトル b を「方向付けられた」角度 L だけ回転させる必要があります。それらが平行である場合、平面は問題ではありませんが、回転角度は同じ L のままです。

2d と 3d の場合、これは非常に簡単ですが、より多くの次元では失われます。Google では何も見つかりませんでした。すでに証明され、テストされている方程式を使用することを好みます (計算によって生じるエラーを回避します:-D)。

ヒント、リンクなどを事前にありがとうございます。

4

2 に答える 2

2

AJ Hanson による Rotations for N-Dimensional Graphicsという論文が役に立つかもしれません。この論文もあります: General n-Dimensional Rotations。また、多くの人が解決しようとしているこのフォーラム スレッドをチェックすることもできます。そして、ここにさらに別の論文があります:n次元空間における剛体回転の概念について。しなければならない。止まる。グーグル。

于 2010-04-08T15:38:09.007 に答える
1

ベクトルaとbによって生成された平面で作業する必要があると思います。その後、コードは次元に関係なく同じになります(ところで、ベクトルの次元は定義により空間の次元です)。

次のように (a,b) を直交化することで、これを行うことができます。

a' = a/||a||
b1 = b - (a'·b)a'  <-- scalar product denoted by ·
b' = b1/||b||

これで、正規直交ベースの平面に乗って、ビジネスに戻るはずです。その基準での b の座標は (a'・b,b'・b) です。a についても同様に (||a||,0) です。アンビエント スペースに戻りたい場合は、座標 (x1,x2) を持つベクトルを x1 a' + x2 b' として記述します。

数学表記があまり混乱しないことを願っています。

于 2010-04-08T14:47:21.947 に答える