Plot 三维绘图的链接旋转

Plot 三维绘图的链接旋转,plot,maple,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]

我在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中,有一个函数可以链接两个轴的属性,以便其中一个轴发生变化(旋转、缩放、范围等)也将应用于另一个。我不相信,在当前的Maple中,可以通过在3D绘图上使用常用的左键单击拖动或通过调整绘图菜单栏中的三个方向框(当您左键单击将光标焦点放置在任何单个3D绘图上时,显示在GUI顶部)来实现这一点

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

如果您不熟悉嵌入式组件的编程,在Maple 17中设置上述功能的一种方便方法是使用其增强的
Explore
命令

在Maple 17中,一个简单的示例可以替换为调用
绘图:-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
命令不支持上述调用,但三个滑块和绘图组件不难连接在一起,以获得统一重新定向和重新显示的相同效果


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

我不相信在当前的Maple中,通过在3D绘图上使用常用的左键单击拖动或通过调整绘图菜单栏中的三个方向框,可以做到这一点(当您单击鼠标左键将光标焦点放置在任何单个3D绘图上时,它显示在GUI的顶部)

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

如果您不熟悉嵌入式组件的编程,在Maple 17中设置上述功能的一种方便方法是使用其增强的
Explore
命令

在Maple 17中,一个简单的示例可以替换为调用
绘图:-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
命令不支持上述调用,但三个滑块和绘图组件不难连接在一起,以获得统一重新定向和重新显示的相同效果

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

很好的技巧,acer,谢谢。我不经常使用Maple,出于某种原因,我总是将其视为“严肃数学的严肃程序”与MatLab相比,例如,在MatLab中,人们可以做更多有趣的/编码的事情(GUI等)。我有Maple-14和
Explore
命令没有你描述的方式工作,但我肯定会玩滑块(我不知道它们甚至存在于Maple:)。很好的技巧,acer,谢谢。我不太经常使用Maple,出于某种原因,我总是将它视为与MatLab相比的“严肃数学的严肃程序”,例如,在MatLab中,人们可以做更多有趣的事情/编码(GUI等).我有Maple-14,
Explore
命令不能按您描述的方式工作,但我肯定会使用滑块(我不知道它们甚至存在于Maple:)。