Quit[]

(* Evaluate the following to see how ContourPlot works // Notice how EvaluationMonitor grabs the data and Dynamic updates the plot *)

(* Example with a circle // freeze controls speed *)
f[x_,y_,freeze_]:=(Pause[freeze];(x^2+y^2))

data1={};freeze=0.01;
pl1=ContourPlot[f[x,y,0]==1,{x,-1.5,1.5},{y,-1.5,1.5},ContourStyle->{Thickness[0.01],Red}];
Dynamic[ListPlot[data1,Frame->True,AspectRatio->1,PlotStyle->Blue,PlotRange->{{-1.6,1.6},{-1.6,1.6}},Epilog->pl1[[1]]]]
ContourPlot[f[x,y,freeze]==1,{x,-1.5,1.5},{y,-1.5,1.5},EvaluationMonitor:>AppendTo[data1,{x,y}]];

(* A more complicated example // freeze controls speed *)
f[x_,y_,freeze_]:=(Pause[freeze];(x^2+y^2+x^5 y^5))

data2={};freeze=0.001;
pl2=ContourPlot[f[x,y,0]==1,{x,-1.5,1.5},{y,-1.5,1.5},ContourStyle->{Thickness[0.01],Red}];
Dynamic[ListPlot[data2,Frame->True,AspectRatio->1,PlotStyle->Blue,PlotRange->{{-1.6,1.6},{-1.6,1.6}},Epilog->pl2[[1]]]]
ContourPlot[f[x,y,freeze]==1,{x,-1.5,1.5},{y,-1.5,1.5},EvaluationMonitor:>AppendTo[data2,{x,y}]];