I'm trying to make an animation of a rotating 3D object and I'm having
some problems.
I want to make a list of images to export them to an AVI file.
For example, the following object:
a = Plot3D[Sin[x y], {x, -5, 5}, {y, -5, 5}, MaxRecursion -> 1,
PlotPoints -> 50, Mesh -> None];
I want to rotate it around the z axis slowly. I've tried Rotate and
changing ViewPoint, but neither work for me because Rotate distorted
the scale of every image and changing ViewPoint only works if I want
to rotate everything at the same time.
I think that I should use Rotate, so I can Rotate several objects in
different angles or speeds. But I would like to avoid the distortion
in the size of the image:
I've tried specifying PlotRange, and it looks promising, but I have
two problems: calculating the best PlotRange paramters so everything
is included, and maximizing the plotted area (so the white region
around the objects is minimized).
This is close, but a lot of white space is around the object, and I
have to set the limits of PlotRange by try-and-see.
b = Table[
Graphics3D[Rotate[a[[1]], phi, {0, 0, 1}], Boxed -> False,
PlotRange -> {{-7, 7}, {-7, 7}, {-1, 1}}], {phi, 0, 1/4 Pi,
1/4 Pi /5}]
Any hint to do this?
The object doesn't need to be this particular Plot3D. It could be a
ParametricPlot3D, several Graphics3D primitives, etc.
Thanks a lot.
Best regards.
Regards.
Wim W. Wilhelm
"Nacho" <ncc17...@gmail.com> wrote in
message
news:fb83p8$849$1...@smc.twtelecom.net...
To zoom in on the object use PlotRegion (in a somewhat unconventional
manner).
a = Plot3D[Sin[x y], {x, -5, 5}, {y, -5, 5}, MaxRecursion -> 1,
PlotPoints -> 50, Mesh -> None]
Manipulate[Graphics3D[Rotate[a[[1]], phi, {0, 0, 1}],
Boxed -> False,
PlotRange -> {{-7, 7}, {-7, 7}, {-1, 1}},
PlotRegion -> {{-0.2, 1.2}, {-0.2, 1.1}}],
{phi, 0, Pi/2}]
You can use Table instead of Manipulate to export your graphics.
--
David Park
djm...@comcast.net
http://home.comcast.net/~djmpark/
"Nacho" <ncc17...@gmail.com> wrote in message
news:fb83p8$849$1...@smc.twtelecom.net...
Hello.
Thanks a lot.
Best regards.
a = Plot3D[Sin[x y], {x, -5, 5}, {y, -5, 5}, MaxRecursion -> 1,
PlotPoints -> 50, Mesh -> None];
I want to rotate it around the z axis slowly. I've tried Rotate and
changing ViewPoint, but neither work for me because Rotate distorted
the scale of every image and changing ViewPoint only works if I want
to rotate everything at the same time.
I think that I should use Rotate, so I can Rotate several objects in
different angles or speeds. But I would like to avoid the distortion
in the size of the image:
I've tried specifying PlotRange, and it looks promising, but I have
two problems: calculating the best PlotRange paramters so everything
is included, and maximizing the plotted area (so the white region
around the objects is minimized).
This is close, but a lot of white space is around the object, and I
have to set the limits of PlotRange by try-and-see.
b = Table[
Graphics3D[Rotate[a[[1]], phi, {0, 0, 1}], Boxed -> False,
PlotRange -> {{-7, 7}, {-7, 7}, {-1, 1}}], {phi, 0, 1/4 Pi,
1/4 Pi /5}]
Any hint to do this?
The object doesn't need to be this particular Plot3D. It could be a
ParametricPlot3D, several Graphics3D primitives, etc.
Thanks a lot.
Best regards.
</pre>
</body>
</html>
--------------090205020104050601020100--
On Sep 1, 6:32 am, "David Park" <djmp...@comcast.net> wrote:
> With animation you almost always have to specify PlotRange (as you did) to
> prevent 'frame jitter'.
>
> To zoom in on the object use PlotRegion (in a somewhat unconventional
> manner).
This is just what I was looking for! It would be nice to have a more
easy way, but I suppose it will do the trick.
Best regards.
You could also try "SphericalRegion->True" as an option for Graphics3D