Re: ListSurfacePlot3D in Mathematica Version 6
- To: mathgroup at smc.vnet.net
- Subject: [mg80532] Re: ListSurfacePlot3D in Mathematica Version 6
- From: John Jowett <John.M.Jowett at gmail.com>
- Date: Fri, 24 Aug 2007 02:05:08 -0400 (EDT)
- References: <fagt5q$8ho$1@smc.vnet.net><fajnmk$ppq$1@smc.vnet.net>
Ulises, Thanks for the reply but I still do not see how to do what I used to be able to do with the old ListSurfacePlot3D. Let me give a very simple example: I want to draw a long thin pipe. In Version 5.2, Needs["Graphics`Graphics3D`"] cyl = Table[{z, Sin[x], Cos[x]}, {x, 0, 2 Pi, Pi/10}, {z, 0, 1000, 50}]; ListSurfacePlot3D[cyl, BoxRatios -> {1, 1, 1}] gives me a plot of a cylinder lying on its side. (And, by the way, the stretched-out sphere in my original post also gives me a sphere.) This is because the old ListSurfacePlot3D takes account of the order of the points in my 2D array of 3D points. In Version 6.0.1, the same code (without the Needs[ ]), gives me something that looks a bit like an unfolding of a box. If I reduce the 2D array to a list of points and let the function do its work: ListSurfacePlot3D[Flatten[cyl, 1]] I get a vertical sheet. Moreover ListPlot3D[cyl] gives an empty frame and ListPlot3D[Flatten[cyl, 1]] gives me a wavy sheet. The new ListSurfacePlot3D will show a cylinder but only when I make the length comparable to the diameter so that its algorithms can sort out how the points join up to make a surface. But in examples like mine (which are pretty common, I think) I just don't need that extra layer of algorithm because I already know how they join up. See the elegant function MakePolygons used inside the old ListSurfacePlot3D. I may be misunderstanding something but I see no way to plot my pipe without restoring functions from the legacy package. Can anyone enlighten me ? John Jowett On Aug 23, 12:31 pm, ulises <uli... at wolfram.com> wrote: > The functionality provided by ListSurfacePlot3D in V5 has being > incorporated in ListPlot3D and even ListContourPlot and > ListDensityPlot. > > You can plot a list of irregular 3-D points with ListPlot3D, and it is > orders of magnitud faster than the previous one. > > In V6.0, ListSurfacePlot3D will try to approximate a surface on a > cloud of points in 3D. If you scale one of the coordinates too much, > as in your example multipliying by 19, the algorithm can not identify > that the points are close to each other any more and it will not > recognize it as a surface. Your data is too sparse. ListSurfacePlot3D > is intended for scanned like data, where the distance between adjacent > points is close enough, and it will try to identify holes on the > surface. > > Ulises Cervantes > WRI