1

我在 Maple 14 的一行中绘制了三个 3D 矢量场:

> 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]

现在我可以单独旋转它们来探索向量场。是否可以链接其他两个图,以便它们自动旋转到相同的方向?如果仅在仅旋转其中一个(例如,最左侧)时才可能这样做,那就太好了。

例如,在 MatLab 中有一个linkprop函数可以链接两个轴的属性,因此其中一个轴的变化(旋转、缩放、范围等)也将应用于另一个轴。

4

1 回答 1

1

我不相信这可以在当前 Maple 中使用 3D 绘图上通常的左键单击拖动或通过调整绘图菜单栏中的三个方向框(当您左键单击时出现在 GUI 的顶部)来完成将光标焦点放在任何单独的 3D 图上)。

但是您可以在一个或多个绘图组件中设置绘图,并创建三个滑块,其基础操作代码会导致重新显示。因此,三个滑块可以控制三个方向角。这不像使用鼠标光标徒手旋转那样令人愉悦。但至少它允许多个绘图组件中的绘图(或者,在您的情况下,单个绘图组件中的阵列绘图)可以一致地旋转。

如果您不熟悉嵌入式组件的编程,在 Maple 17 中设置上述内容的一种便捷方法是使用其增强的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命令不支持上述调用,但是三个 Slider 和 Plot Component 不难钩在一起,达到统一重定向和重新显示的相同效果。

上述方法的内存效率不是很高,因为它需要从引擎到 GUI 重新创建和通信非常多的完整 3D 绘图结构。这与通过在 3D 图上徒手点击拖动鼠标光标获得的旋转形成对比,后者仅涉及 GUI,并且可能只是高效的 OpenGL 重新显示。任何类型的内存泄漏,即使是每个通过的 3D 绘图的小内存泄漏(正如 Maple 16 的标准 GUI 似乎有),这种方法可能导致标准 Java GUI 缓慢消耗内存并最终停止运行。

于 2013-04-16T06:28:49.597 回答