RE: ContourPlot and finite approximation to level sets
- To: mathgroup at smc.vnet.net
- Subject: [mg68657] RE: [mg68629] ContourPlot and finite approximation to level sets
- From: "David Park" <djmp at earthlink.net>
- Date: Mon, 14 Aug 2006 06:44:42 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
James, You can do this by extracting the data points from the plot and then using SplineFit on the points. Here I will extract a single contour for an ellipse. f[x_, y_] := x^2 + 2y^2 plot1 = ContourPlot[f[x, y], {x, -2, 2}, {y, -2, 2}, Contours -> {1}, ContourShading -> False, PlotPoints -> {30, 30}]; Convert the ContourGraphics to Graphics and then extract the first part and you will see how Mathematica represents the contours. contour = First@Graphics@plot1 (output omitted) Extract the points from contour. cdata = First@Cases[contour, Line[pts_] -> pts, \[Infinity]] (output omitted) Now load the SplinFit package. Needs["NumericalMath`SplineFit`"] cfunction = SplineFit[cdata, Cubic] SplineFunction["Cubic", "{0., 48.}", <>] The domain of the parameter for the function is 0 <= t <= 48. You can get a point on the contour by, for example, cfunction[7] {0.482759, -0.619284} and as a check we could plot it using ParametricPlot. ParametricPlot[cfunction[t], {t, 0, 48}, AspectRatio -> Automatic]; David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: dkjk at bigpond.net.au [mailto:dkjk at bigpond.net.au] To: mathgroup at smc.vnet.net Hi all, Given a real-valued function f(x,y) over {(x,y) | xmin < x < xmax, ymin < y < ymax}, ContourPlot can be used to generate the graph of the level set { (x,y) | f(x,y) = c } using ContourPlot[f[x,y],{x,xmin,xmax},{y,ymin,ymax},Contours->{c},ContourShading- >False]. Is there any way to access the coordinates used by Mathematica to paint the contour line of height c? If not, can anyone suggest an algorithm, such as the one used by Mathematica, to finitely approximate a level set? Thanks very much in advance, James