<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - comments on Post, animation of 3D plot rotation</title>
    <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Tue, 16 Jun 2026 01:39:00 GMT</lastBuildDate>
    <pubDate>Tue, 16 Jun 2026 01:39:00 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest comments added to the Post, animation of 3D plot rotation</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - comments on Post, animation of 3D plot rotation</title>
      <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation</link>
    </image>
    <item>
      <title>example specific</title>
      <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation?ref=Feed:MaplePrimes:animation of 3D plot rotation:Comments#comment130022</link>
      <itunes:summary>&lt;p&gt;At the risk of being a bore, I ought to mention that the performance improvements may depend on the actual example to be plotted.&lt;/p&gt;
&lt;p&gt;That is to say, for a very expensive expression or procedure then the cost of computing the data for just the first frame would be much higher. And so the total time saved by not recomputing those numeric results for each and every subsequent frame would be much greater.&lt;/p&gt;
&lt;p&gt;Also, the memory savings would depend on the resolution of each plotted frame, be that in terms of grid-size or number of points plotted, etc. The greater the resolution and data per frame, the greater the savings.&lt;/p&gt;
&lt;p&gt;The timing and memory allocation for the given example might seem small and unimportant. But more costly 3D plotting examples do arise. Also, there is the matter of scaling. If we want Maple's plotting to scale up well (or, just better) to huge examples then we should always strive to improve performance when practical.&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;acer&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, animation of 3D plot rotation</description>
      <guid>130022</guid>
      <pubDate>Wed, 25 Jan 2012 08:35:35 Z</pubDate>
      <itunes:author>acer</itunes:author>
      <author>acer</author>
    </item>
    <item>
      <title>offset rotation</title>
      <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation?ref=Feed:MaplePrimes:animation of 3D plot rotation:Comments#comment130051</link>
      <itunes:summary>&lt;p&gt;How about rotating objects about their relative centers offset from the central viewing axis?&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, animation of 3D plot rotation</description>
      <guid>130051</guid>
      <pubDate>Wed, 25 Jan 2012 23:29:13 Z</pubDate>
      <itunes:author>Christopher2222</itunes:author>
      <author>Christopher2222</author>
    </item>
    <item>
      <title>viewpoint</title>
      <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation?ref=Feed:MaplePrimes:animation of 3D plot rotation:Comments#comment130052</link>
      <itunes:summary>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation#comment130051"&gt;@Christopher2222&lt;/a&gt;&amp;nbsp;Well, this post was about rotating the whole view, and you seem to be asking about rotating objects. (If I've understood you, then &lt;a href="http://www.mapleprimes.com/posts/126519-3D-Plot-Rotation-Efficiency"&gt;this&lt;/a&gt;&amp;nbsp;earlier post on more efficient rotation of GRID and MESH might pertain.)&lt;/p&gt;
&lt;p&gt;This reminds me that there may be yet another efficient way (in recent versions of Maple) to get rotation of the whole plot (objects + axes). That is to use the &lt;a href="http://www.maplesoft.com/support/help/search.aspx?term=plot3d,viewpoint"&gt;?plot3d,viewpoint&lt;/a&gt; option to control the path. It might look the same, for the observer to move in a particular path about the "plot" as it would be for the observer to stay fixed and have the orientation change dynamically.&lt;/p&gt;
&lt;p&gt;So then we have a vector calculus computation, in general. Suppose that we want to animate a "rotation" (movement) of a plot, and using the `orientation` option we'd have a parameterization like,&lt;/p&gt;
&lt;p&gt;orientation=[f(t),g(t),h(t)]&lt;/p&gt;
&lt;p&gt;as a `plot3d` optional argument. Here the center is (0,0,0), I suppose. How shall we most naturally convert this to a `viewpoint` optional argument of another `plotd3` call?&lt;/p&gt;
&lt;p&gt;This has almost as good performance as the third (best) version in the post above. But, what could a sequence of `upvectors` be instead, to get a view where the axes appear always tilted and pointing in the same direction (relative to the user!) like above?&lt;/p&gt;
&lt;pre&gt;restart:
st,ba:=time(),kernelopts(bytesalloc):
plot3d(1+x+1*x^2-1*y+1*y^2+1*x*y, x=-5..5, y=-5..5,
          axes=normal, labels=[x,y,z],
          viewpoint=[look = [0,0,0],
                     upvector=[0,0,1],
                     location=[seq([3000*cos(t),3000*sin(t),0],
                               t=0..evalf(2*Pi),.02)], fieldofview=0.4]);
time()-st,kernelopts(bytesalloc)-ba;

                         0.062, 2096768
&lt;/pre&gt;</itunes:summary>
      <description>The latest comments added to the Post, animation of 3D plot rotation</description>
      <guid>130052</guid>
      <pubDate>Thu, 26 Jan 2012 00:29:34 Z</pubDate>
      <itunes:author>acer</itunes:author>
      <author>acer</author>
    </item>
    <item>
      <title>exporting frames</title>
      <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation?ref=Feed:MaplePrimes:animation of 3D plot rotation:Comments#comment134747</link>
      <itunes:summary>&lt;p&gt;@acer&lt;/p&gt;
&lt;p&gt;I've adapted your code to export each individual frame. It sort of works, with minor quirks. It just about does what I need for now, provided I stick to png format, but for the record, let me copy the code here with short comments.&lt;/p&gt;
&lt;p&gt;Adapting your code I asked a procedure to use the existing orientation options and rotate according to the first angle. (it currently doesn't work if no orientation has been specified) Then I asked the procedure to export the individual plots for each frame, with a naming scheme like so: nameofplot1, nameofplot2, etc.. The procedure takes the number of frames to be produced as an input, e.g. 'numframes'=4. Then, to export the plot, you specify: 'keep'=true (words "export" and "save" are reserved, so I used "keep"). To export in a certain format, you specify 'ext'=png or 'ext'=ps, with the default set to png. &lt;br&gt;&lt;br&gt;Exporting as png works on the test plot, named p, and produces correctly rotated p1,p2,p3,p4. Exporting as ps fails in Maple 16 (it works in Maple 15 in the limited sense that it produces the low-quality postscript plots Maple 15 usually produces). A funny thing happens with gif, it produces p1,p2,p3 as expected, but then p4 is an animated gif of all the frames.&lt;/p&gt;
&lt;p&gt;Right now I'm using png, so this is good enough. Ultimately it would be nice to be able to export as postscript. A funny thing happened with ps: the first time around I was able to export p1 and p2 in postsript with Maple 16, it took a long time but the exported graphs were very nice. Unfortunately in subsequent attempts it will produce only p1 with an ugly black background and then hangs. Not sure what's going on. I've generally been unable to export postscript plots with Maple 16, so this is not news, but the surprising thing is that I was able to export 2 of the 4 plots at some point during my experiments. Can you export all 4 postscript plots?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br&gt;Edit: Corrected a typo in the code below, where I was incorrectly selecting angles. Also, I think I just noticed that the third angle of ORIENTATION (the psi value) is dropped at times, which I suspect is after a plot device crash.&lt;/p&gt;
&lt;pre&gt;restart;&lt;br&gt;&lt;br&gt;### The test plot&lt;br&gt;&lt;br&gt;p := plot3d(1+x+1*x^2-1*y+1*y^2+1*x*y&lt;br&gt;&amp;nbsp; , x = -5 .. 5&lt;br&gt;&amp;nbsp; , y = -5 .. 5&lt;br&gt;&amp;nbsp; , 'orientation' = [ 45, 45, 45 ]&lt;br&gt;&amp;nbsp; , 'axes' = normal&lt;br&gt;&amp;nbsp; , 'labels' = [x,y,z]&lt;br&gt;) :&lt;br&gt;&lt;br&gt;### Procedure Animate&lt;br&gt;&lt;br&gt;Animate := proc(p :: evaln&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , { [n,numframes,frames] :: posint := 4 }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , { [k,keep] :: boolean := false }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , { [x,ext,extension] := png} &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; description "based on acer's code 130009-Animation-Of-3D-Plot-Rotation" ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local A, o, i, j ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o := select(type,[op(eval(p))], specfunc(anything,{ORIENTATION})):&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A := [ seq( PLOT3D(GRID( op([1,1..2],eval(p)), op([1,3],eval(p)) )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , remove(type,[op(eval(p))], specfunc(anything,{GRID,ORIENTATION}))[]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ORIENTATION( 360/n*(j-1) , op([1,2],o) , op([1,3],o) )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #, ORIENTATION( 360/n*(j-1) , op([1,2],o) )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) , j = 1 .. n )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ] ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if keep = true then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try for i from 1 to n do&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plotsetup('x', 'plotoutput'=cat(convert(p,string),convert(i,string),".",convert(x,string)),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'plotoptions'=`color,portrait,noborder,transparent`) ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print( plots:-display( A[i]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'axesfont' = [ TIMES, 10 ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'labelfont' = [ TIMES, ROMAN, 10] &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) ) ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do; catch: print("something went wrong"); plotsetup(default); end try;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return plots:-display(A, 'insequence' = true);&lt;br&gt;end proc:&lt;br&gt;&lt;br&gt;Animate(p, 'frames'=4); # fails if there is no orientation option, to be fixed&lt;br&gt;Animate(p, 'frames'=4, 'keep'=true); # Maple 15,16: p1,p2,p3 work as expected &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # but p4.gif keeps all the animations together, not sure why&lt;br&gt;Animate(p, 'frames'=4, 'keep'=true, 'ext'=png); # Maple 15,16: works as expected&lt;br&gt;Animate(p, 'frames'=4, 'keep'=true, 'ext'=ps); # Maple 16: produces the first plot then hangs for a while &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Maple 15: produces fast but ugly&lt;br&gt;Animate(p, 'frames'=4, 'keep'=true, 'ext'=eps); # Maple 16: produces the first plot, with black background&lt;br&gt;&lt;br&gt;&lt;/pre&gt;</itunes:summary>
      <description>The latest comments added to the Post, animation of 3D plot rotation</description>
      <guid>134747</guid>
      <pubDate>Sat, 02 Jun 2012 12:07:16 Z</pubDate>
      <itunes:author>PatrickT</itunes:author>
      <author>PatrickT</author>
    </item>
    <item>
      <title>animated odeplot</title>
      <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation?ref=Feed:MaplePrimes:animation of 3D plot rotation:Comments#comment134749</link>
      <itunes:summary>&lt;pre&gt;I wanted to do the same thing for a plot created with odeplot. The following seems to work:&lt;br&gt;&lt;br&gt;restart;&lt;br&gt;### Create plot with CURVES structure (odeplot)&lt;br&gt;&lt;br&gt;sys := diff(y(x), x) = z(x), diff(z(x), x) = y(x):&lt;br&gt;var := {y(x), z(x)}:&lt;br&gt;sol := dsolve({sys, y(0) = 0, z(0) = 1}, var, type = numeric, method = classical):&lt;br&gt;&lt;br&gt;p := plots:-odeplot(sol, [x, y(x), z(x)]&lt;br&gt;&amp;nbsp; , x = -4 .. 4&lt;br&gt;&amp;nbsp; , 'style' = point&lt;br&gt;&amp;nbsp; , 'numpoints' = 50&lt;br&gt;&amp;nbsp; , 'symbol' = diamond&lt;br&gt;&amp;nbsp; , 'color' = orange&lt;br&gt;&amp;nbsp; , 'labels' = [`x`,`y`,"z"]&lt;br&gt;&amp;nbsp; , 'title' = `Amazing Plot`&lt;br&gt;&amp;nbsp; , 'axes' = normal&lt;br&gt;&amp;nbsp; , 'view' = [-4..4,-20..20,0..30]&lt;br&gt;&amp;nbsp; , 'orientation' = [ 45, 45 ]&lt;br&gt;) :&lt;br&gt;&lt;br&gt;# plots:-display(%, orientation = [45,45] );&lt;br&gt;&lt;br&gt;### Procedure Animate Can Export Individual Frames of an Animation&lt;br&gt;### Works for an odeplot structure&lt;br&gt;&lt;br&gt;Animate2 := proc(p :: evaln&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , { [n,numframes,frames] :: posint := 4 }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , { [k,keep] :: boolean := false } # words "export" and "save" are reserved&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , { [x,ext,extension] := png} &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; description "based on acer's code 130009-Animation-Of-3D-Plot-Rotation" ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local A, o, i, j ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o := select(type,[op(eval(p))], specfunc(anything,{ORIENTATION})):&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A := [ seq( PLOT3D( remove(type,[op(eval(p))], specfunc(anything,{ORIENTATION}))[]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ORIENTATION( op([1,1],o)+360/n*(j-1) , op([1,2],o) ) )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , j = 1 .. n )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ] ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if keep = true then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try for i from 1 to n do&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plotsetup('x', 'plotoutput'=cat(convert(p,string),convert(i,string),".",convert(x,string)),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'plotoptions'=`color,portrait,noborder,transparent`) ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print( plots:-display( A[i]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'axesfont' = [ TIMES, 10 ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'labelfont' = [ TIMES, ROMAN, 10] &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) ) ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do; catch: print("something went wrong"); plotsetup(default); end try;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return plots:-display(A, 'insequence' = true);&lt;br&gt;end proc:&lt;br&gt;&lt;br&gt;Animate2(p, 'frames'=100); # fails if there is no orientation option, set up without psi angle in orientation, to be fixed&lt;br&gt;Animate2(p, 'frames'=4, 'keep'=true);&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Edit: changed ORIENTATION( 360/n*(j-1) , op([1,2],o) ) to ORIENTATION( op([1,1],o)+360/n*(j-1) , op([1,2],o) ), which is what I intended, to use the initial angle for the first frame&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, animation of 3D plot rotation</description>
      <guid>134749</guid>
      <pubDate>Sat, 02 Jun 2012 13:36:31 Z</pubDate>
      <itunes:author>PatrickT</itunes:author>
      <author>PatrickT</author>
    </item>
    <item>
      <title>third label</title>
      <link>http://www.mapleprimes.com/posts/130009-Animation-Of-3D-Plot-Rotation?ref=Feed:MaplePrimes:animation of 3D plot rotation:Comments#comment134756</link>
      <itunes:summary>&lt;p&gt;Below is the test odeplot produced with acer's code, but exported with the pointy-clicky method. Sadly, the third label (z) is dropped when exporting using the programmatic plotsetup method outlined above (this is a problem I remember reporting a few releases ago, so it hasn't been fixed with Maple 16). The animated plot with the label exported with context-menu clicks:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="/view.aspx?sf=134756/438045/130009Plot1.gif"&gt;&lt;img src="/view.aspx?sf=134756/438045/130009Plot1.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One frame exported by the procedure Animate2 above, with the third label (z) missing:&lt;/p&gt;
&lt;p&gt;&lt;a href="/view.aspx?sf=134756/438045/p2.png"&gt;&lt;img src="/view.aspx?sf=134756/438045/p2.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, animation of 3D plot rotation</description>
      <guid>134756</guid>
      <pubDate>Sat, 02 Jun 2012 16:21:53 Z</pubDate>
      <itunes:author>PatrickT</itunes:author>
      <author>PatrickT</author>
    </item>
  </channel>
</rss>