1

Maple 14 で 3 つの 3D ベクトル フィールドを 1 行にプロットしています。

> with(plots);
> A := Array(1 .. 3):
> A[1] := fieldplot3d(...):
> A[2] := fieldplot3d(...):
> A[3] := fieldplot3d(...):
> display(A);
  Here are the three plots arranged like this: [plot1] [plot2] [plot3]

これで、それぞれを個別に回転させて、ベクトル フィールドを調べることができます。他の 2 つのプロットをリンクして、同じ向きに自動的に回転させることはできますか? そのうちの 1 つだけを回転させる場合 (たとえば、一番左) のみ可能であれば問題ありません。

たとえば、MatLab には、2 つの軸のプロパティをリンクできるlinkprop関数があり、そのうちの 1 つの変更 (回転、スケール、範囲など) が他の軸にも適用されます。

4

1 に答える 1

1

現在の Maple では、通常の 3D プロットで左クリックしてドラッグするか、プロット メニューバー (左クリックすると GUI の上部に表示される) の 3 つの方向ボックスを調整することで、これを実行できるとは思えません。個々の 3D プロットのいずれかにカーソル フォーカスを置きます)。

ただし、1 つまたは複数のプロット コンポーネントでプロットを設定し、基になるアクション コードが再表示を引き起こす 3 つのスライダーを作成できます。したがって、3 つのスライダーは 3 つの方向角度を制御できます。これは、マウス カーソルを使用してフリーハンドで回転する場合ほど快適ではありません。しかし、少なくとも、複数のプロット コンポーネント (または、この場合は単一のプロット コンポーネント内の配列プロット) のプロットを一斉に回転させることができます。

埋め込みコンポーネントのプログラミングに慣れていない場合、Maple 17 で上記を設定する便利な方法の 1 つは、拡張Exploreコマンドを使用することです。

Maple 17 では、 への呼び出しに置き換えることができる単純な例は、次のplots:-fieldplotようになります。

A:=Array(1..3):
A[1]:=plot3d(x^3*y,x=-10..10,y=-10..10):
A[2]:=plot3d(sin(x)*y,x=-10..10,y=-10..10):
A[3]:=plot3d(x*y^2,x=-10..10,y=-10..10):

Explore(plots:-display(A,orientation=[theta,phi,psi]),
    parameters=[theta=-180..180,phi=-180..180,psi=-180..180]);

Maple 16 では、このExploreコマンドは上記の呼び出しをサポートしていませんが、3 つの Slider と Plot コンポーネントを一緒にフックして、統一された方向変更と再表示の同じ効果を得ることは難しくありません。

上記のアプローチは、非常に多くの 3D プロット構造全体をエンジンから GUI に再作成および伝達する必要があるため、メモリ効率はあまり高くありません。これは、3D プロット上でマウス カーソルをフリーハンドでクリック アンド ドラッグすることによって得られる種類の回転とは対照的です。これは、GUI だけを使用し、おそらく効率的な OpenGL 再表示のみを必要とします。(Maple 16 の標準 GUI に見られるように) 渡された 3D プロットごとに小さなものであっても、あらゆる種類のメモリ リークが発生し、このアプローチにより、標準 Java GUI がゆっくりとメモリを消費し、最終的に停止する可能性があります。

于 2013-04-16T06:28:49.597 に答える