4

私がコーディングしている3Dイメージングソフトウェアの場合:

楕円体Eを定義する必要があります。これは、空間内の任意の半径、中心、および回転を持つことができます。 代替テキスト

ユーザーインターフェイスを使用すると、ユーザーは3つの楕円を制御できます。これらの楕円は、楕円体の「スライス」(画像では赤、緑、青)であり、主なデカルト平面(xy、yz。xz)に(定義上)平行です。

これらの3つの楕円は、楕円体全体の一部であり、それを定義します。 代替テキスト

各スライスは、空間内でドラッグ、サイズ変更、または回転でき、各スライスは完全に定義されています。これは、空間内の中心の3D位置、半径2、軸平面からの距離です。

それぞれの変更は、明らかに、楕円体Eと他の2つの派生楕円体のパラメーターに影響を与えるはずです。

スライスに加えられた変更に基づいて楕円体Eを再計算する方程式が必要です

(楕円体の好ましいタイプの方程式は、XY楕円体カット(変数z)を簡単に導き出すことができるはずです)

何か案は?事前に感謝しますサール

4

3 に答える 3

2

この問題の鍵は、最初の楕円方程式を行列形式で書き直すことだと思います: x T Ax、ここでx = {x,y,z} で、Aは正定値です。取る

楕円体行列。

相似変換を介してAを更新できます。そのため、更新された行列はA' = U T AUとなります。ここで、U直交行列で、U Tはその転置行列です。次に、A'を使用して他のビューを更新します。

3 つの軸を中心とした回転行列から始めます。

3 つの軸を中心とした回転行列。

軸を中心とした回転がA の8 つの項に影響することがはっきりとわかります。Aは対称であるため、これは 6 つの項のうち 5 つだけを変更するように削減されます。スケーリング/ストレッチも非常に簡単に行えます。

ストレッチが x 軸 (または任意の適切な軸) に沿っていると仮定することから始めます。そのため、Sは対角 {sqrt( s ), 1, 1} を持つ対角行列になります。ここで、s は適用されるストレッチの量です。次に、スケーリング マトリックスを正しい適用方向、つまりR Theta SR Theta Tに回転します。ここで、Theta は、正の x 軸とストレッチ方向の間の角度で、時計回りです。ここでの回転の逆の順序に注意してください。R Theta Tは座標を回転させて、Sが x 軸を引き伸ばし、R Thetaを引き伸ばすと考えることができるからです。それらを元に戻します。たとえば、xy 平面が x = y に沿って s 倍に再スケーリングされる場合、

スケーリング行列

Sは、回転と同じ方法でAに適用されます。ここでも、zz 項以外のすべてがスケーリング操作によって直接影響を受けることがわかります。

于 2010-12-02T16:39:47.533 に答える
1

ここに手に負えない状況の例があります:

1 つの真の allipsoid と、3 つの座標平面との交点が点である球。この例では、どの二次曲線をマッピングするかを決定できません。

代替テキスト

代替テキスト

これらのサーフェスの方程式は次のとおりです。

 (-1 + x)^2 + (-1 + y)^2 + (-1 + z)^2 == 1  

1/8 (12 + 3 x^2 + 3 y^2 - 2 y (2 + z) - 2 x (2 + y + z) + z (-4 + 3 z)) == 1

したがって、ソリューションは一意に定義されていないため、3 つの交点に基づいて楕円体を再構築することはできません。あなたの質問に対する他の回答は翻訳を考慮していないと思います。

于 2010-12-05T04:11:32.510 に答える
0

特定のインスタンスで、3つの楕円がEの「デカルト」カットを表す場合、それらのいずれかの(パン、ズーム、回転)のいずれかを1回変更すると、一意の楕円体が再定義されます。幸いなことに、この問題には1匹のマウス(または1匹の認識されたキーストローク)または1つの心があります。

于 2010-11-28T12:17:36.230 に答える