R3 には、中心点 (P)、軸の長さ (a、b、c)、および回転ベクトル (R) に関して記述された 2 つの楕円体があります。特定の中心線に沿って、これら 2 つの楕円体の間の管状構造を補間したいと考えています。これは、中心線に沿った各点を中心とする楕円体を作成することによって行われます。その軸の長さは、2 つの端点の間で線形に補間され、回転は球面線形補間 ( SLERP ) を使用して四元数として取得されます。
以前、この問題について同様の質問をここで行いました。それ以来、この問題をもう少し切り分けて、新しい投稿が必要だと考えました。ここでの違いは、SLERP を実行する前に、まず 2 つの参照楕円体を、そのうちの 1 つを表す回転行列の逆数で回転させ、そのうちの 1 つが軸に整列する (つまり、回転しない) ようにすることです。以前はこれで問題が解決したように見えましたが、この修正が機能しない例に遭遇しました。
この問題を再現するためのソース コードは、こちらから入手できます。関連する関数はellipsoidSLERP
、それが呼び出す関数です。出力のスクリーンショットを次に示します。
表示されているのは、中心線 (シアン) に沿った両端 (緑) の 2 つの参照楕円体ボリューム間の楕円体ボリューム (青) の補間です。
問題文
左側の補間は正しく機能し、滑らかな管状構造が得られます。右側の補間は正しく機能せず、ねじれが発生します。
この動作の原因は何ですか?どうすれば修正できますか?
明確にするために私にできることがあれば教えてください。