隣接する面の4つの頂点がメモリ内で同じ頂点になるように、2種類(たとえば2つ、実際にはn> 1)の長方形のプリズムが「互いに接続されている」と仮定します。つまり、2つの木製ブロックのように、一方が他方に積み重ねられ、下部に4つの頂点、2つの間で共有される中央に4つ、上部に4つの頂点があります。ここで、最初に「上部」の木製ブロックで特定の回転を実行できるようにします。これは、4つの共有頂点の中心点を持つヒンジ上にあるかのようになります。
したがって、肘のように、特定の角度で最大45度までしか曲がることができないとしましょう。回転を実行するには、オブジェクトを構成する8つの頂点をその見えないヒンジの中心点の周りで回転させます。その過程で、他のブロックの4つの共有頂点は多少移動しますが、ヒンジがそれらの間の中心点であるため、下部のブロックから「移動」することはありません。それらを木製と呼ぶのは、特定の方法で変形するため、直感に反していると思いますが、私はそれを視覚化するように設定しようとしていました。とにかく、この下部ブロックを別の方法で回転できるようにしたいが、上部ブロックを取り付けられているように動作させたいとしましょう。したがって、下部のブロックが移動すると、上部のブロックも一緒に振り回されますが、それらの間のヒンジにある屈曲もあります。
「一番上の」ブロックから始めて、依存関係チェーンを下に向かって、現在のブロックとその「上の」ブロックのすべての頂点で回転を実行して、軸角度またはクォータニオンを介して段階的に変換を行うことを検討していました。ただし、これには、このチェーンの各ステップで、現在のヒンジを原点として配置するためにすべての頂点をオフセットし、回転を実行してから、前のオフセットを逆にする必要があります。これを処理するより効率的な方法はありますか?つまり、速度の効率は、メモリに追加の前処理されたデータがあることは大したことではありません。また、このような線形の依存関係チェーンを期待できない場合もあります(たとえば、上部のブロックが下部のブロックに接続されてリングを形成するなど)。