GnuPlot - Maxima draw

Script tiré de la page http://gnuplot.sourceforge.net/demo_4.0/surface2.html, à exécuter dans un terminal après avoir lancé gnuplot :

set dummy u,v
set key right below Right noreverse noinvert enhanced box linetype -2 linewidth 1.000 samplen 4 spacing 1 width 0 height 0 autotitles
set parametric
set view 50, 30, 1, 1
set isosamples 50, 20
set hidden3d offset 1 trianglepattern 3 undefined 1 altdiagonal bentover
set ticslevel 0
set title "Interlocking Tori" 0.000000,0.000000 font ""
set urange [ -3.14159 : 3.14159 ] noreverse nowriteback
set vrange [ -3.14159 : 3.14159 ] noreverse nowriteback
set zrange [ * : * ] noreverse nowriteback # (currently [-3.00000:1.50000] )
splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v) with lines

Après avoir bougé la figure à la souris, on peut la sauvegarder dans un fichier postscript (pour utilisation dans un fichier Latex par exemple) par les commandes :
set terminal postscript eps
set out 'a.eps'
replot
set term pop
Cf http://www.gnuplot.info/faq/faq.html#SECTION00052000000000000000

'convert a.eps a.jpg'


On peut enlever toutes les décorations par les trois premières lignes suivantes :
unset key # titre
unset xtics;unset ytics;unset ztics # graduation des axes
unset border #axes
set terminal postscript eps
set out 'b.eps'
replot
set term pop

'convert b.eps b.jpg'

Voici un document latex g.tex avec figure :
\documentclass[a4paper,10pt]{article}
\usepackage{graphicx}
\begin{document}
Un document LaTeX avec le dessin d'un tore

\begin{center}
\includegraphics[scale=.8]{b.eps}
\end{center}
\end{document}

'latex g.tex;dvipdf g;convert -density 100 g.pdf g.jpg' puis redimensionnement avec 'kolorpaint'

g.pdf

Avec Maxima et la librairie Draw

Cf le script Maxima moebius-1.txt . Execution avec Maxima 5.13 (math11) :
[12:21 dehon/tex/M2topalg] maxima

Maxima 5.13.0 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (aka GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1) batch("moebius-1.txt");

batching #p/home/at/dehon/tex/M2topalg/moebius-1.txt
                                    u                          u
(%i2) f(u, r) := [cos(u) (0.2 r cos(-) + 1), sin(u) (0.2 r cos(-) + 1),
                                    2                          2
                                                                            u
                                                                  0.2 r sin(-)]
                                                                            2
                                    u                          u
(%o2) f(u, r) := [cos(u) (0.2 r cos(-) + 1), sin(u) (0.2 r cos(-) + 1),
                                    2                          2
                                                                            u
                                                                  0.2 r sin(-)]
                                                                            2
(%i3)                             load(draw)
(%o3)            /usr/share/maxima/5.13.0/share/draw/draw.lisp
(%i4) draw3d(file_name = moebius, surface_hide = true, xu_grid = 50,
yv_grid = 10, zrange = [- 0.4, 0.4], rot_horizontal = 24, rot_vertical = 50,
axis_3d = false, xtics = false, ytics = false, ztics = false,
palette = [3, 4, 6], colorbox = false,
parametric_surface(f(u, r) , f(u, r) , f(u, r) , u, - %pi, %pi, r, - 1, 1))
                          1         2         3
(%o4)                     [gr3d(parametric_surface)]
(%i5) gnuplot_replot("set view ,,,.7");
(%o5)
(%i6) gnuplot_replot(" set out 'm.eps';set terminal postscript eps");



On peut inclure l'image postscript 'm.eps' dans un document LaTeX avec l'instruction :

\includegraphics[scale=.2,trim=0 40 0 40]{m.eps} %cf '%%BoundingBox: 50 50 410 302' dans l'entete du fichier 'moebius.eps'


Avec 'wxmaxima' sous WinXP, la fonction 'draw' ne rend pas la main, mais on peut ouvrir un terminal gnuplot en cliquant droit dans la fenêtre gnuplot et en choisissant 'option - terminal'.

Avec maxima 5.14 et suivant, 'enhanced3d=...' permet de colorier la surface avec une palette de dégradés : cf ce script.



Animations possibles : voir cette page d'exemples.
fx dehon, 18 nov, 17 dec 2008, 29 oct 2009