Re: Re: Re: Plotting a contour plot with cylindrical co-ordinates
- To: mathgroup at smc.vnet.net
- Subject: [mg50231] Re: [mg50215] Re: [mg50195] Re: Plotting a contour plot with cylindrical co-ordinates
- From: DrBob <drbob at bigfoot.com>
- Date: Sun, 22 Aug 2004 00:19:40 -0400 (EDT)
- References: <200408210704.DAA24776@smc.vnet.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
Amazing! Bobby On Sat, 21 Aug 2004 03:04:15 -0400 (EDT), David Park <djmp at earthlink.net> wrote: > With DrawGraphics these examples would be done as follows. > > Needs["DrawGraphics`DrawingMaster`"] > > oldpoints = {{0, 1}, {2, 2}, {1, 3}}; > newpoints = oldpoints // FineGrainPoints[0.2, 4]; > > Draw2D[ > {Point /@ newpoints, > PointSize[0.02], > Point /@ oldpoints}, > AspectRatio -> Automatic, > Frame -> True]; > > Draw2D[ > {PointSize[0.02], Point /@ newpoints, > PointSize[0.04], Point /@ oldpoints, > Red, Dashing[{0.02}], Line[oldpoints]} /. > DrawingTransform[#1 Cos[#2] &, #1Sin[#2] &], > > AspectRatio -> Automatic, > Frame -> True, > Background -> Linen]; > > Draw2D[ > {{ContourDraw[r + theta, {r, 0, 1}, {theta, 0, Pi}] // > FineGrainPolygons[0.05, 4]} /. > DrawingTransform[#1 Cos[#2] &, #1Sin[#2] &], > Circle[{0, 0}, 1, {0, Pi}], > Line[{{-1, 0}, {1, 0}}]}, > AspectRatio -> Automatic, > Frame -> True, > Background -> Linen, > ImageSize -> 400]; > > David Park > djmp at earthlink.net > http://home.earthlink.net/~djmp/ > > > > From: Peltio [mailto:peltio at twilight.zone] To: mathgroup at smc.vnet.net > To: mathgroup at smc.vnet.net > > Jake wrote: > >> I have a set of data which corresponds to points on a circle. I have >> these values as a function of r and theta. Is there a way of plotting >> this in Mathematica? The ContourPlot function requires x and y >> co-ordinates. > > I'm not sure I've understood clearly your problem. > If you want to plot a ContourPlot in polar coordinates, I would suggest to > use a trick I've learnt from Micheal Trott's "The Vibrating Ellipse-shaped > Drum", in The Mathematica Journal volume 6, issue 4. He plots the contour > plot in the rectangular coordinate system and then transforms the lines and > polyogons produced in order to adapt it to the new coordinate system. > > A function 'refine' is defined in order to make curves smoother. In fact a > straight line in the x-y system is generally curve in the r-theta system, > and it is necessary to add several intermediate points to give a smoother > mapping. > This is M. Trott's function: > > refine[coords_, d_] := Module[ > {n, l}, > Join[Join @@ ( > If[(l = (Sqrt[#1.#1] &)[Subtract @@ #1]) < d, > #1, > n = Floor[l/d] + 1; > (Table[#1 + (i/n)*(#2 - #1), {i, 0, n - 1}] &) @@ #1] &) /@ > Partition[coords, 2, 1], {Last[coords]}] > ] > > The parameter d sets the maximum distance between points. The following > picture shows the points it adds to a three point line: > > oldpoints = {{0, 1}, {2, 2}, {1, 3}}; > newpoints = refine[oldpoints, .2]; > Show[Graphics[ > {Point /@ newpoints,PointSize[.02], Point /@ oldpoints}], > Frame -> True]; > > So, if we define a coordinate transformation like this: > > toCircle[{r_, theta_}] = {r Cos[theta], r Sin[theta]}; > > We can see the difference between the curve connecting the two transformed > endpoints and the one connecting all the intermediate points generated by > refine: > > endpoints = toCircle /@ oldpoints; > midpoints = toCircle /@ refine[oldpoints, .2]; > Show[Graphics[{ > Point /@ midpoints, > {PointSize[.02], Point /@ endpoints}, > {Dashing[{.01, .02}], Line[endpoints], Hue[.84], Line[midpoints]} > } > ], Frame -> True]; > > Now all we have to do, following M. Trott's solution, is to convert our > graphics. We can use the following rule (accepting the name of the > conversion routine): > > convert[toSystem_, d_] := > f : _Line | _Polygon :> (Head[f])[toSystem /@ (refine[#, d] & @@ f)] > > Here's an example (that can be streamlined into a procedure): > > gr = ContourPlot[r + theta, {r, 0, 1}, {theta, 0, Pi}]; > Show[Graphics[gr] /. convert[toCircle, 0.1],AspectRatio -> Automatic]; > > cheers, > Peltio > hoping that the OP can adapt these procedures to his needs. > > > > > > -- DrBob at bigfoot.com www.eclecticdreams.net
- References:
- Re: Re: Plotting a contour plot with cylindrical co-ordinates
- From: "David Park" <djmp@earthlink.net>
- Re: Re: Plotting a contour plot with cylindrical co-ordinates