Re: Fast interactive graphics
- To: mathgroup at smc.vnet.net
- Subject: [mg77946] Re: Fast interactive graphics
- From: Helen Read <read at math.uvm.edu>
- Date: Wed, 20 Jun 2007 05:34:27 -0400 (EDT)
- Organization: Aioe.org NNTP Server
- References: <f58d3p$8cl$1@smc.vnet.net>
John Fultz wrote:
> On Mon, 18 Jun 2007 06:50:42 -0400 (EDT), Helen Read wrote:
>>
>> On a somewhat related note,
>> I find that rotating 3D graphics with the mouse in some situations
>> completely freezes up my 5-year-old PC (2.26 GHz, 1 GB RAM). It's quick
>> for a Plot3D or ParametricPlot3D of a simple surface, but if I combine
>> multiple graphics, the response is incredibly slow to the point of
>> freezing up. I ran into this when making up illustrations of
>> approximating the volume of a surface of revolution with 8 or so disks /
>> washers / cylindrical shells, which I put together with Table and Show.
>> The graphic renders pretty quickly (a lot faster than 5.2, on the same
>> PC), but it's pretty much impossible to rotate with the mouse. Hopefully
>> it will be more responsive in the classrooms where I teach, which have
>> newer computers.
>
> Feel free to send me some of the examples you're seeing problems with, and
> perhaps I can help you out. Since you weren't very specific in this email, I
> can't say too much. You did, though, mention that you were plotting cylinders,
> and so I should mention Cylinder[] and the Method->{"CylinderPoints"} option.
> "CylinderPoints" is documented right at the end of this tutorial...
Thanks for point me to Cylinder[]. I had been constructing everything
with ParametricPlot3D, and didn't know about the knew Cylinder[]
graphics primitive. Cylinder[] works quite well, and I now have some
lovely illustrations of approximating volumes with disks (a Table of
stacked, opaque cylinders) and with cylindrical shells (a Table of
transparent, nested cylinders). They look great, render in a reasonable
time even on my old PC, and rotate easily with the mouse, without having
to use the Method->{"CylinderPoints"} option.
The one graphic that's been causing the most trouble is the following.
The idea is to illustrate the use of washers (stacked on top of each
other) to approximate the volume of a solid of revolution. For example:
f[y_]=1/12(18-y+9y^2-3y^4);
g[y_]=1-y/12-(y^2)/8;
RevolutionPlot3D[{{f[y], y}, {g[y], y}}, {y, -2, 2}]
Because of the "hole" in the middle of each washer, I was unable to come
up with a way to do what I needed with Cylinder[]. (I tried concentric
cylinders, with the idea of having the inner cylinder acting as negative
space -- the hole -- but after much fiddling around with Opacity, Color,
etc., I couldn't find a way to make it look right.) So here's what I
have instead.
n=10;
dy=4/n;
Show[Table[RegionPlot3D[g[-2+(k+1/2)dy]^2 <= x^2+y^2 <=
f[-2+(k+1/2)dy]^2,{x,-3,3},{y,-3,3},{z,-2+k*dy,-2+(k+1)dy},
PlotPoints->25,Mesh->False],PlotRange->Automatic]
Until I tried setting Mesh->False, this thing would freeze up my PC
completely if I tried to rotate it with the mouse. With Mesh->False it's
a lot better -- it's still a bit sluggish, but it will rotate with the
mouse as long as n (and the number of PlotPoints) isn't too large. I
think it will be fine on the newer computers in the classroom, but if
you can think of a way to make it a little less sluggish and still look
OK, let me know.
--
Helen Read
University of Vermont