3D绘图的链接旋转

时间:2013-04-12 15:19:33

标签: plot maple

我正在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函数可以链接两个轴的属性,因此其中一个轴的变化(旋转,缩放,范围等)也将应用于其他轴。

1 个答案:

答案 0 :(得分:1)

我不相信这可以在当前的Maple中完成,使用3D绘图上通常的左键单击拖动或通过调整绘图菜单栏中的三个方向框(显示在GUI&#39上) ; s顶部,当您左键单击以将光标焦点放在任何单个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命令不支持上述调用,但三个Sliders和Plot Component并不难以连接在一起以获得统一重定向和重新显示的相同效果。

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