Function pmap draw Poincare map – show intersections of the curve and the surface.
MGL code:
subplot 1 1 0 '<_^':title 'Poincare map sample' ode r 'cos(y)+sin(z);cos(z)+sin(x);cos(x)+sin(y)' 'xyz' [0.1,0,0] 0.1 100 rotate 40 60:copy x r(0):copy y r(1):copy z r(2) ranges x y z axis:plot x y z 'b' xlabel '\i x' 0:ylabel '\i y' 0:zlabel '\i z' pmap x y z z 'b#o' fsurf '0'
C++ code:
void smgl_pmap(mglGraph *gr)
{
gr->SubPlot(1,1,0,"<_^");
if(big!=3) gr->Title("Poincare map sample");
mglData ini(3); ini[0]=0.1;
mglData r(mglODE("cos(y)+sin(z);cos(z)+sin(x);cos(x)+sin(y)","xyz",ini,0.1,100));
mglData x(r.SubData(0)),y(r.SubData(1)), z(r.SubData(2));
gr->Rotate(40,60); gr->SetRanges(x,y,z);
gr->Axis(); gr->FSurf("0"); gr->Plot(x,y,z,"b");
gr->Label('x',"\\i x",0); gr->Label('y',"\\i y",0); gr->Label('z',"\\i z",0);
gr->Pmap(x,y,z,z, "b#o");
}