Re: Q: PlotPoints has dramatic timing effect (and not trivialy)
- To: mathgroup at smc.vnet.net
- Subject: [mg23239] Re: Q: PlotPoints has dramatic timing effect (and not trivialy)
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sat, 29 Apr 2000 22:04:47 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <8e0n9k$f4g@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
you draw the sphere twice with t in [0,2Pi] and u in [0,2Pi]
t must run between [0, Pi].
Thats all -- for an even number of plot points the polygons
for the polygons for t+dt and t+Pi+dt are identical. Since Mathematica
uses a painter algorthim to draw the polygons, it must split
the two identical polygons for t and t+Pi, the splitting procedure
typical slow down a painter algorithm form n*Log[n] to n^2 for
n polygons.
For an odd number of plot points the polygons are not exactly
the same and a smaller number of splits is needed to order the
polygons.
Hope that helps
Jens
Gozo Zaar wrote:
>
> Hello all,
>
> Look at this: (I've edited it some for readability)
> This is just a parametric plot of a sphere:
>
> In[2]:=
> $Version
> Out[2]=
> "Microsoft Windows 3.0 (October 6, 1996)"
>
> In[3]:=Timing[ParametricPlot3D[{Cos[u]Sin[t],Sin[u]Sin[t],Cos[t]},
> ,PlotPoints->16]]
>
> Out[3]={15.1 Second,Graphics3D}
>
> In[4]:=Timing[ParametricPlot3D[{Cos[u]Sin[t],Sin[u]Sin[t],Cos[t]},
> {t,0,2\[Pi]},{u,0,2\[Pi]},PlotPoints->17]]
>
> Out[4]={2.08 Second,Graphics3D}
>
> In[5]:=Timing[ParametricPlot3D[{Cos[u]Sin[t],Sin[u]Sin[t],Cos[t]},
> {t,0,2\[Pi]},{u,0,2\[Pi]},PlotPoints->18]]
>
> Out[5]={22.41 Second,Graphics3D}
>
> As you can see, the number of PlotPoints has dramatic effect on timing.
> There seems to be some optimal number (17 in this case) which is much more
> efficient (than 16 or 18). Moreover, this behavior is even more dramatic at
> larger numbers:
>
> In[4]:=Timing[ParametricPlot3D[{Cos[u]Sin[t],Sin[u]Sin[t],Cos[t]},
> {t,0,2\[Pi]},{u,0,2\[Pi]},PlotPoints->33]]
>
> Out[4]={5.82 Second,Graphics3D}
>
> In[5]:=Timing[ParametricPlot3D[{Cos[u]Sin[t],Sin[u]Sin[t],Cos[t]},
> {t,0,2\[Pi]},{u,0,2\[Pi]},PlotPoints->32]]
>
> Out[5]={173.4 Second,Graphics3D}
>
> Now clearly I don't really care if I have 33 or 32 PlotPoints in my plot
> (they really look very much the same. In this case anyway). But I do care
> for my plot to take 6 seconds rather then 173 (Note: 33 Points is better
> even than 16 !!!). So here are my questions:
>
> 1. Why is this happening? (Sure it has to do with internal implementation
> but how and why so strongly)
> 2. Can we make good use out of it and know in advance which PlotPoints are
> good for us? (In other words; what is magical about 17 and 33 in this case
> and what will happens on different cases)
>
> Knowing the answer to 2 is much desired for the general complicated case.
>
> Anyway, when dealing with {t,0,2\[Pi]},{u,0,2\[Pi]}, I will, from now on,
> use either 17 or 33....
>
> Thank you all for your attention,