Re: ListVectorPlot3D with VectorPoints->All
- To: mathgroup at smc.vnet.net
- Subject: [mg96737] Re: ListVectorPlot3D with VectorPoints->All
- From: Jens <noeckel at gmail.com>
- Date: Mon, 23 Feb 2009 05:02:43 -0500 (EST)
- References: <gjcufe$ck5$1@smc.vnet.net>
On Dec 30 2008, 2:51 am, "Sjoerd C. de Vries" <sjoerd.c.devr... at gmail.com> wrote: > Hi all, > > I was playing with ListVectorPlot3D, which plots a vector field based > on a list of position and vector pairs. According to the documentation > it interpolates unless you include a VectorPoints -> All option. So > why then does > > ListVectorPlot3D[ Table[{{x, y, z}, {x, y, z}}, {x, -1, 1, .1}, {y, > -1, 1, .1}, {z, -1, 1, .1}], VectorPoints -> All] > > not work? > > BTW: Although the ListVectorPlot3D doc page lists VectorPoints -> All > as a valid setting it does not occur in the VectorPoints doc page > itself. > > Cheers -- Sjoerd > I can confirm this for the form ListVectorPlot3D[{{{x1,x2,x3}, {v1,v2,v3}}, ...}] in Mathematica 7 on Mac OS X. To force plotting of vectors only at the prescribed points {x1,x2,x3}, the option VectorPoints->All given in the documentation doesn't work. But fortunately one can achieve the desired result with something like this: With[{grid = Tuples[{Range[10], Range[10], zRange = Range[2]}]}, ListVectorPlot3D[Map[{#, Cross[#, {0, 0, 1}]} &, grid], VectorPoints -> grid]] The problem is that when I change zRange to zRange = Range[1] (corresponding to points all in a single plane), ListVectorPlot gives an error message saying that my data grid "... is not a valid vector field data set or a valid list of data sets." My guess is that this happens because ListVectorPlot still tries to do an interpolation even though I've told it exactly where to put the vectors. This is a bug, I would say, because there is no reason at all to do any interpolation if VectorPoints is set to a specific point list. Jens