/* Przyklady z podrecznika Graphics with Maxima, autor: Wilhelm Haager HTL St. Pölten, Department Electrical Engineering wilhelm.haager@htlstp.ac.at */ /* Probki Plot - wxplot2d */ wxplot2d(sin(x),[x,-%pi,%pi])$ xwerte:[0,3,6,4,6,3,0,2,0]; ywerte:[0,2,0,3,6,4,6,3,0]; wxplot2d([[discrete,xwerte,ywerte], [discrete,[[3,1],[5,3],[3,5],[1,3],[3,1]]]])$ /* Krzywe zadane parametrycznie */ wxplot2d([parametric,sin(t),sin(2*t), [t,0,2*%pi]],[nticks,100])$ /* trzy rozne wykresy na jednym rysunku */ wxplot2d([sin(x),[discrete,xwerte,ywerte], [parametric,10+3*sin(2*t),2+2*cos(3*t), [t,0,2*%pi]]],[x,0,15],[nticks,100])$ /* Rysunki trojwymiarowe - wxplot3d */ /* musimy zadac zakresy x i y, nie mozemy zadac dla z */ wxplot3d(1/(1+x^2+y^2),[x,-3,3],[y,-3,3]) /* postac parametryczna powierzchni trojwymiarowej */ [fx:cos(x),fy:y,fz:sin(x)+y^2]; wxplot3d([fx,fy,fz],[x,0,2*%pi],[y,0,1], [palette,false])$ /* warstwice */ wxcontour_plot(1/(1+x^2+y^2), [x,-3,3],[y,-3,3])$ /*parametry sterujace programem gnuplot - przekazywane przed wykonaniem rysunku */ wxplot2d([parametric,sin(3*t),sin(4*t), [t,0,2*%pi]],[nticks,100])$ /* tu wymuszamy zgodnosc odcinkow jednostkowych na osiach x i y */ wxplot2d([parametric,sin(3*t),sin(4*t), [t,0,2*%pi]],[nticks,100], [gnuplot_preamble,"set size ratio -1"])$ /* rózne style linii */ lx:[1,2,3,4,5,6,7,8,9]; ly:[1,2,2.4,2.4,1.7,1.5,1.6,2,2.7]; /* tworzymy liste 4 zestawow danych o tych samych x i roznych y style mowi o typie, szerokosci i kolorze linii oraz typie punktow */ wxplot2d(makelist([discrete,lx,c+ly],c,1,4), [x,0,10],[y,1,8],[legend,""], [style,[lines,2,1],[points,2,6,1], [points,4,2,7],[linespoints,3,4,3]])$ /* tworzymy uzyteczna tabelke kolorow i punktow */ plotlist:apply(append,makelist(makelist ([discrete,[[nx,ny]]],nx,1,13),ny,1,7))$ stylelist:cons(style,apply(append,makelist( makelist([points,4,ny,nx],nx,1,13),ny,1,7)))$ wxplot2d(plotlist,stylelist,[x,0,14],[y,0,8], [legend,""],[xlabel,"Point numbers"], [ylabel,"Color numbers"])$ /* Pakiet draw */ load(draw); g1:explicit(2*sin(x),x,-%pi,%pi); g2:parametric(2*sin(phi),2*cos(phi),phi,0,2*%pi); g3:implicit(x^2-y^2=1,x,-4,4,y,-4,4); g4:polar(1+0.8*sin(13*t),t,0,2*%pi)$ wxdraw2d(nticks=200,color=red,g1,color=blue,g2, color=green,g3,color=orange,g4)$ /* ksztalty "wbudowane" */ poly:polygon(xwerte+2,ywerte+2); punkte:points([1,3,5,7,9,9,9,9,9,7,5,3,1,1,1,1], [1,1,1,1,1,3,5,7,9,9,9,9,9,7,5,3]); rechteck:rectangle([1,-2],[6,-7]); ell:ellipse(6,-6,3,2,0,360); balken:bars([-7,2,1],[-5,5,1],[-3,7,1],[-1,6,1]); [v1,v2,v3]:[vector([-8,-8],[6,0]), vector([-8,-8],[6,6]),vector([-2,-8],[0,6])]; text:label(["Bars",-5,-1], ["Points and Polygon",5,-1], ["Vectors",-5,-9], ["Rectangle and Ellipse",5,-9]); wxdraw2d(xrange=[-10,10],yrange=[-10,10], punkte,poly, fill_color=blue,rechteck, fill_color=orange,ell, fill_color=green,balken, head_length=0.8,head_angle=15,v1, color=blue,v2,color=red,v3, color=black,text)$ /* obiekty trojwymiarowe */ gimp:implicit(1=x**2+y**2+z**2, x,-1,1,y,-1,1,z,-1,1); gexp:explicit(sin(2*x)*sin(2*y),x,-2,2,y,-2,2); wxdraw3d(surface_hide=true, color=red,gexp,color=blue,gimp)$ /* 4 obroty spirali wokol torusa */ spiral:parametric((2-0.5*cos(t))*sin(t/4), (2-0.5*cos(t))*cos(t/4), 0.5*sin(t),t,0,8*%pi); torus:parametric_surface( (2-0.2*cos(phi))*sin(theta), (2-0.2*cos(phi))*cos(theta), 0.2*sin(phi),phi,0,2*%pi,theta,0,2*%pi); wxdraw3d(nticks=200,surface_hide=true, color=orange,torus, line_width=2,color=blue,spiral)$ /* stozek i "slimak" - wsp. cylindryczne i sferyczne */ cone:cylindrical( (z-15)*0.05,z,-15,15,phi,0,2*%pi); snail:spherical(4+0.5*phi,phi, -2*%pi,%pi,tht,0,%pi); wxdraw3d(surface_hide=true,color=green,cone, color=brown,snail)$ /* punkty i wektory w 3 wymiarach */ pts:points(makelist( [sin(t*%pi/10),cos(t*%pi/10),0],t,1,20))$ [v1,v2,v3,v4]:[vector([0,0,1],[0.7,0,0]), vector([0,0,1],[0,0.7,0]),vector([0,0,1], [-0.7,0,0]),vector([0,0,1],[0,-0.7,0])]; text:label(["North",0,1,1],["East",1,0,1], ["South",0,-1,1],["West",-1,0,1]); wxdraw3d(color=red,pts,color=orange, v1,v2,v3,v4,color=blue,text)$ /* zmiany parametrow rysunku */ set_draw_defaults( user_preamble="set size ratio -1", dimensions=[200,200],color=red, nticks=200)$ notics:[xtics=false,ytics=false]; lissa:parametric(sin(3*t),sin(4*t),t,0,2*%pi); wxdraw2d(lissa,notics)$ /* przywracamy domyslne parametry */ set_draw_defaults(); /* zmiany etykiet na osiach */ yt:setify(create_list(signum(n) *sqrt(abs(n)),n,[-4,-3,-1,0,1,3,4])/2); xt:setify(makelist( [string(30*n),30*n*%pi/180],n,0,12)); wxdraw2d(yrange=[-1.5,1.5],xtics=xt, ytics=yt,grid=true,color=red, explicit(sin(x),x,0,2*%pi), xlabel="phi (Grad)",ylabel="sin(phi)")$ /* rodzaje punktow */ ################################################ -1 $none 4 square 9 filled_up_triangle 0 dot 5 filled_square 10 down_triangle 1 plus 6 circle 11 filled_down_triangle 2 multiply 7 filled_circle 12 diamond 3 asterisk 8 up_triangle 13 filled_diamond ##################################################### sine:points(float(map(lambda([u], [u,sin(u)]),makelist(u,u,-6,6)/2))); line:points(float(makelist([k,-k/4],k,-3,3))); wxdraw2d(color=blue,line_width=2, explicit(sin(x),x,-%pi,%pi), color=red,point_size=2,point_type=7, sine,points_joined=true,point_type=4, color=green,line)$ /* etykiety i wektory */ [l1,l2,l3]:["left aligned label", "centered label","rigt aligned label"]$ [la,hs,ha,hl]:[label_alignment, head_size,head_angle,head_length]$ wxdraw2d(xrange=[-1,1],yrange=[-6,5], yaxis=true,line_width=3,grid=true,la=left, label([l1,0,4]),la=center,label([l2,0,2]), la=right,label([l3,0,0]),ha=15,hl=0.2, color=red,vector([-0.5,-2],[0.5,0]), hl=0.3,color=blue,vector([-0.5,-4],[1,0]))$ /* opcje grafiki 2-wymiarowej */ noframe:[axis_left=false,axis_right=false, axis_top=false,axis_bottom=false, xtics=false,ytics=false]$ wxdraw2d(noframe,line_width=2, fill_color=dark-khaki, color=forest-green,rechteck, border=false,fill_color=orange,ell)$ wxdraw2d(line_width=3,filled_func=true, color=black,explicit(sin(x),x,0,2*%pi), fill_color=blue,explicit(cos(x),x,0,2*%pi), filled_func=0.5*sin(3*x),fill_color=orange, explicit( -0.5*sin(3*x),x,0,2*%pi))$ /* rysowanie w 3 wymiarach */ f:2/(x^2+y^2+1)+1/((x-5)^2+y^2+1); g:explicit(f,x,-2,10,y,-6,6)$ wxdraw3d(xtics=false,ytics=false, ztics=false,axis_3d=false,xu_grid=50, color=red,surface_hide=true,g)$ wxdraw3d(xtics=false,ytics=false, ztics=false,axis_3d=false,xu_grid=50, enhanced3d=true,surface_hide=true, view=[90,0],g)$ /*mapy warstwicowe */ wxdraw3d(xtics=false,ytics=false, ztics=false,axis_3d=false, contour_levels=10,contour=surface,g)$ wxdraw3d(xtics=false,ytics=false, ztics=false,axis_3d=false, contour_levels=10,contour=map,g)$