#### 6.35 animated graphics (19.3.00)

##### 6.35.1 Sandy Yates

I am using Maple 6 (SIX). I am trying to develop a visual example where an object by animating the rotation of a surface around a sphere that can be run below.

I cannot get the animation (through a sequence) to work.

Does anybody have any ideas how to get this to work? I am sure it worked one time!

 restart: with(plots):with(plottools):
f:=(x,y)->(x^2-y^2)/5 -5;
n:=40:
a := plot3d( f(x,y), x=-5..5,y=-5..5 ):
c := sphere([0,0,0], 2):
display3d( [c,a], axes=NONE, light=[0,0,1,1,1], scaling=CONSTRAINED,
orientation=[70,80], style=PATCHNOGRID);
display3d( seq( plot3d ( f(x,y), x=-5..5, y=-5..5, scaling=CONSTRAINED,
i=0..n-1 ), insequence=true );
display3d( seq( plot3d( {f(x,y),c }, x=-5..5,y=-5..5, style=PATCHNOGRID,
axes=NONE, light=[0,0,1,1,1], orientation=[60+i*720/n,70],
shading=ZHUE ), i=0..n-1  ), insequence=true );



##### 6.35.2 Helmut Kahovec(21.3.00)

You may try the following:

> restart;
> with(plots):
> with(plottools):
> f:=(x,y)->(x^2-y^2)/5-5:
> n:=40:
> a:=plot3d(
>   f(x,y),
>   x=-5..5,y=-5..5,
>   style=PATCHNOGRID,
> ):
> c:=sphere([0,0,0],2):
> display3d(
>   [a,c],
>   orientation=[70,80],
>   axes=NONE,
>   scaling=CONSTRAINED,
>   light=[45,45,1,1,1]
> );

> s:=NULL:
> for i to n do
>   s:=s,display3d(
>     [a,c],
>     orientation=[70+(i-1)*720/n,80]
>   )
> od:
> display3d(
>   [s],
>   axes=NONE,
>   scaling=CONSTRAINED,
>   light=[45,45,1,1,1],
>   insequence=true
> );



##### 6.35.3 Bill Bauldry(21.3.00)

I believe the problem is that plot3d doesn’t understand sphere. You’ll need to use display to combine the plot3d of f and the sphere; possibly by:

  display(seq(display(c, plot3d(f(x, y), x=-5..5, y=-5..5);



Then you can use the animation on the combined sequence:

 PF := (i,n)-> plot3d( f(x,y), x=-5..5,y=-5..5, style=PATCHNOGRID,

display(seq(display(c, PF(i, n)), i=0..n-1), insequence=true);



##### 6.35.4 Clinton Wolfe (21.3.00)

Try this as the last line:

>display3d( seq( display3d( [c,a], axes=NONE, light=[0,0,1,1,1],
scaling=CONSTRAINED, orientation=[60+i*720/n,70],
style=PATCHNOGRID),i=0..n-1), insequence=true );



(display returns a plot object, just like plot3d.)

##### 6.35.5 Robert Israel (21.3.00)

Your c is a plot structure, not an algebraic expression in x and y, so you don’t want to put it into the plot3d command. What you want is something like

> display(seq(display({c,plot3d(...)}), i=0..n-1), insequence=true);