これはmath.stackexchange.comに適合するかもしれませんが、OpenGLでプログラミングしているので、ここでそれを尋ねます。OpenGLで超球面の表面を移動する
私は、世界が4-D超球(3球とも呼ばれる)の表面に閉じ込められている宇宙船のアイディアを持っていました。したがって、それを内部から見ると、それは3次元の世界のように見えますが、あらゆる方向にナビゲートすることで、私は3球の限られた量を決して残しません。
3つのシャープを「フラットな」3次元空間として表現するために、GLSLシェーダとして実装するのが非常に簡単な立体投影を使用します。入力ベクトルを1からw座標。
オブジェクトの頂点を表すには、x²+y²+z²+w²= 1となるような正規化された4dベクトルを使用しています。
解決する最初の問題は回転でした。しかし、私はすぐに、通常の3d回転行列では、3次元投影で見る人の周りを回転させるのに十分であることを理解しました。これは、z軸の周りの球を回転させることは、立体投影法)。
次に、w軸に沿った回転は、3d投影内での翻訳と同等であることを理解しました(通常の3次元変換を「フラット」空間として変換するのではなく)軸回転行列(x '、y')=(x * cos a - y * sin a、x * sin a + y * cos a)を中心に、
これはこれまでのところ私が得たところであり、視聴者が投影から直面している位置に基づいて、どのように前進するかを理解できませんでした。私は逆変換を適用して、視聴者が超球座標系で直面している正規化された4-Dベクトル(Fと呼ばれます)を導き出すことができますが、4x4行列を使用してその方向にナビゲートする方法はわかりません)。すべての頂点Vについて、V '= normalize(d * F + V)を実行します。ここで、dは前方に移動した距離です(ちょっと奇妙な単位では正確にはできません)。この方法は、dの小さな値に対してのみ機能し、dと角度の変化との間には直接の相関はない。
したがって、問題は次のとおりです。4次元超球面の表面に(4x4行列変換を使用して)前進する方法は?
Hypersphereの数学的記述の参考資料はありますか? – ja72
私が言ったように、それはちょうどx2 + y2 + z2 + w2 = 1 – lvella