Example of primitives: line, curve, rhomb, ellipse, face, sphere, drop, cone.
MGL code:
subplot 2 2 0 '':title 'Line, Curve, Rhomb, Ellipse' '' -1.5 line -1 -1 -0.5 1 'qAI' curve -0.6 -1 1 1 0 1 1 1 'rA' ball 0 -0.5 '*':ball 1 -0.1 '*' rhomb 0 0.4 1 0.9 0.2 'b#' rhomb 0 0 1 0.4 0.2 'cg@' ellipse 0 -0.5 1 -0.1 0.2 'u#' ellipse 0 -1 1 -0.6 0.2 'm@' subplot 2 3 1 '':title 'Arc, Polygon, Symbol';size -1.2 arc -0.6 0 -0.6 0.3 180 '2kA':ball -0.6 0 polygon 0 0 0 0.4 6 'r' new x 50 'cos(3*pi*x)':new y 50 'sin(pi*x)' addsymbol 'a' x y symbol 0.7 0 'a' light on subplot 2 3 3 '<^>' 0 -0.2:title 'Face[xyz]';size -1.5:rotate 50 60:box facex 1 0 -1 1 1 'r':facey -1 -1 -1 1 1 'g':facez 1 -1 -1 -1 1 'b' face -1 -1 1 -1 1 1 1 -1 0 1 1 1 'bmgr' subplot 2 3 5 '':title 'Cone';size -1.5 cone -0.7 -0.3 0 -0.7 0.7 0.5 0.2 0.1 'b':text -0.7 -0.7 'no edges\n(default)';size -1.5 cone 0 -0.3 0 0 0.7 0.5 0.2 0.1 'g@':text 0 -0.7 'with edges\n("\@" style)';size -1.5 cone 0.7 -0.3 0 0.7 0.7 0.5 0.2 0 'Ggb':text 0.7 -0.7 '"arrow" with\n{}gradient';size -1.5 subplot 2 2 2 '':title 'Sphere and Drop' line -0.9 0 1 0.9 0 1 text -0.9 0.4 'sh=0':drop -0.9 0 0 1 0.5 'r' 0:ball -0.9 0 1 'k' text -0.3 0.6 'sh=0.33':drop -0.3 0 0 1 0.5 'r' 0.33:ball -0.3 0 1 'k' text 0.3 0.8 'sh=0.67':drop 0.3 0 0 1 0.5 'r' 0.67:ball 0.3 0 1 'k' text 0.9 1. 'sh=1':drop 0.9 0 0 1 0.5 'r' 1:ball 0.9 0 1 'k' text -0.9 -1.1 'asp=0.33':drop -0.9 -0.7 0 1 0.5 'b' 0 0.33 text -0.3 -1.1 'asp=0.67':drop -0.3 -0.7 0 1 0.5 'b' 0 0.67 text 0.3 -1.1 'asp=1':drop 0.3 -0.7 0 1 0.5 'b' 0 1 text 0.9 -1.1 'asp=1.5':drop 0.9 -0.7 0 1 0.5 'b' 0 1.5
C++ code:
void smgl_primitives(mglGraph *gr) // flag # { gr->SubPlot(2,2,0,""); gr->Title("Line, Curve, Rhomb, Ellipse","",-1.5); gr->Line(mglPoint(-1,-1),mglPoint(-0.5,1),"qAI"); gr->Curve(mglPoint(-0.6,-1),mglPoint(1,1),mglPoint(0,1),mglPoint(1,1),"rA"); gr->Rhomb(mglPoint(0,0.4),mglPoint(1,0.9),0.2,"b#"); gr->Rhomb(mglPoint(0,0),mglPoint(1,0.4),0.2,"cg@"); gr->Ellipse(mglPoint(0,-0.5),mglPoint(1,-0.1),0.2,"u#"); gr->Ellipse(mglPoint(0,-1),mglPoint(1,-0.6),0.2,"m@"); gr->Mark(mglPoint(0,-0.5),"*"); gr->Mark(mglPoint(1,-0.1),"*"); gr->SubPlot(2,3,1,""); gr->Title("Arc, Polygon, Symbol","", -1.2*2); gr->Arc(mglPoint(-0.6,0), mglPoint(-0.6,0.3), 180, "2kA"); gr->Ball(-0.6,0); gr->Polygon(mglPoint(), mglPoint(0,0.4), 6, "r"); mglData x(50), y(50); gr->Fill(x,"cos(3*pi*x)"); gr->Fill(y,"sin(pi*x)"); gr->DefineSymbol('a',x,y); gr->Symbol(mglPoint(0.7),'a'); gr->Light(true); gr->SubPlot(2,3,3,"<^>",0,-0.2); gr->Title("Face[xyz]", "", -1.5*2); gr->Rotate(50,60); gr->Box(); gr->FaceX(mglPoint(1,0,-1),1,1,"r"); gr->FaceY(mglPoint(-1,-1,-1),1,1,"g"); gr->FaceZ(mglPoint(1,-1,-1),-1,1,"b"); gr->Face(mglPoint(-1,-1,1),mglPoint(-1,1,1),mglPoint(1,-1,0),mglPoint(1,1,1),"bmgr"); gr->SubPlot(2,3,5,""); gr->Title("Cone", "", -1.5*2); gr->Cone(mglPoint(-0.7,-0.3),mglPoint(-0.7,0.7,0.5),0.2,0.1,"b"); gr->Puts(mglPoint(-0.7,-0.7),"no edges\n(default)","", -1.5); gr->Cone(mglPoint(0,-0.3),mglPoint(0,0.7,0.5),0.2,0.1,"g@"); gr->Puts(mglPoint(0,-0.7),"with edges\n('\\@' style)","", -1.5); gr->Cone(mglPoint(0.7,-0.3),mglPoint(0.7,0.7,0.5),0.2,0,"ry"); gr->Puts(mglPoint(0.7,-0.7),"'arrow' with\ngradient","", -1.5); gr->SubPlot(2,2,2,""); gr->Title("Sphere and Drop"); gr->Alpha(false); gr->Puts(mglPoint(-0.9,0.4),"sh=0"); gr->Ball(mglPoint(-0.9,0,1),'k'); gr->Drop(mglPoint(-0.9,0),mglPoint(0,1),0.5,"r",0); gr->Puts(mglPoint(-0.3,0.6),"sh=0.33"); gr->Ball(mglPoint(-0.3,0,1),'k'); gr->Drop(mglPoint(-0.3,0),mglPoint(0,1),0.5,"r",0.33); gr->Puts(mglPoint(0.3,0.8),"sh=0.67"); gr->Ball(mglPoint(0.3,0,1),'k'); gr->Drop(mglPoint(0.3,0),mglPoint(0,1),0.5,"r",0.67); gr->Puts(mglPoint(0.9,1),"sh=1"); gr->Ball(mglPoint(0.9,0,1),'k'); gr->Drop(mglPoint(0.9,0),mglPoint(0,1),0.5,"r",1); gr->Line(mglPoint(-0.9,0,1),mglPoint(0.9,0,1),"b"); gr->Puts(mglPoint(-0.9,-1.1),"asp=0.33"); gr->Drop(mglPoint(-0.9,-0.7),mglPoint(0,1),0.5,"b",0,0.33); gr->Puts(mglPoint(-0.3,-1.1),"asp=0.67"); gr->Drop(mglPoint(-0.3,-0.7),mglPoint(0,1),0.5,"b",0,0.67); gr->Puts(mglPoint(0.3,-1.1),"asp=1"); gr->Drop(mglPoint(0.3,-0.7),mglPoint(0,1),0.5,"b",0,1); gr->Puts(mglPoint(0.9,-1.1),"asp=1.5"); gr->Drop(mglPoint(0.9,-0.7),mglPoint(0,1),0.5,"b",0,1.5); }