Dessiner une surface en 3D à partir d'une matrice de cotes

Voir le sujet précédent Voir le sujet suivant Aller en bas

Dessiner une surface en 3D à partir d'une matrice de cotes

Message  OlivierG le Ven 6 Mar - 13:17

Bonjour,

Je fais suite à la discussion suivante sur le forum de MathemaTeX:
Discussion

Mon objectif est de dessiner une surface en 3D à partir d'une matrice des cotes située dans un fichier externe.
oleanet de MathemaTeX m'a dit qu'il avait contacté le créateur de TeXgraph pour lui transmettre mon fichier et que celui-ci lui avait rendu un fichier .obj.
Je voudrais juste savoir comment on peut faire cela en code TeXgraph dans TeX ?

Merci.

OlivierG

Nombre de messages : 4
Age : 31
Date d'inscription : 06/03/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Dessiner une surface en 3D à partir d'une matrice de cotes

Message  P.Fradin le Ven 6 Mar - 13:36

Bonjour,

J'ai effectivement eu un message hier de (Mme) oleanet concernant ce problème. Je lui ai répondu que dans la version actuelle la lecture des données numériques se fait par paquet de 2 (TeXgraph ne gère que des listes de complexes), mais dans la prochaine version test il y a une commande pour lire les données numériques une à une. Si cette version test vous intéresse je peux la mettre en ligne (linux? windows?), j'ai gardé le code qui m'a permis de lire votre fichier de données, mais est-ce vraiment l'export obj qui vous intéresse? Tant qu'à faire autant exporter en pstricks ou eps (si vous voulez le lissage) pour insertion dans un document TeX.

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Dessiner une surface en 3D à partir d'une matrice de cotes

Message  OlivierG le Ven 6 Mar - 14:15

Bonjour,

Mille pardons à Mme oleanet.
Je suis intéressé par cette nouvelle version ainsi que par le code qui vous a permis de lire le fichier de données.
Je préférerais effectivement exporter le dessin en pstricks, ps ou eps. Mais le code pour l'export en obj m'intéresse aussi, par curiosité.
Mon poste est équipé de Windows.

Merci d'avoir répondu aussi vite !

[EDIT] Je n'avais pas vu qu'un sujet similaire avait déjà été traité Embarassed J'aurais peut-être pu m'en sortir tout seul.
Fil
Serait-ce possible d'avoir une couleur différente selon les lignes de niveau ?
Dernière question: est-ce facile d'ajouter les axes, graduations et légendes ?

OlivierG

Nombre de messages : 4
Age : 31
Date d'inscription : 06/03/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Dessiner une surface en 3D à partir d'une matrice de cotes

Message  P.Fradin le Ven 6 Mar - 17:23

Re,

J'ai mis en ligne une version (1.94-beta-huit.1) qui inclut la commande qui manquait, dans le premier post de ce fil.

Je vous suggère de bien lire le fichier LisezMoi.txt, en particulier le chemin d'accès à TeXgrap ne doit pas comporter d'epace ou autre caractère exotique! Pour pouvoir utiliser le code TeXgraph dans un document LaTeX vous aurez aussi une petite manip à faire. Je suppose que vos avez une distribtution TeX à jour ainsi que les packages classiques, en particulier pstricks et pstricks-add.

Le fichier TeX que j'ai utilisé pour générer la figure est liredata.tex. Il suppose que le fichier de données est dans le même dossier que ce document et qu'il s'appelle test.dat.

Voici le contenu de ce fichier (à compiler avec l'option --enable-write18 sous Miktext ou --shell-escape sous TeXlive):

Code:

\documentclass[11pt,a4paper,frenchb]{article}
\usepackage[utf8]{inputenc}
\usepackage{fourier}
\usepackage{xcolor}
\usepackage{amsmath,amssymb}
\usepackage{texgraph}
\usepackage[a4paper,margin=2cm,headheight=15pt,dvips]{geometry}
\usepackage{babel}
\usepackage{pstricks-add}

\begin{document}

\begin{texgraph}[name=surface, file]
Var
    C = 0;
    L = 0;

Cmd [S:=ReadData1("test.dat"),
    k:=1,
    for lg in S By jump do
       NewVar(["lg",k], lg), Inc(k,1)
    od,
          L:=k-3
   ];

Mac
    MakeSurf = [C:=Nops(lg2),
   sommets:= for l from 1 to L do
               for k from 1 to C do
                   lg1[l]+i*lg2[k], Eval(["lg",2+l,"[",k,"]"] ),
               od
               od,
    faces:= for l from 1 to L-1 do
               for k from 1 to C-1 do
                   x:=C*(l-1)+k,
                   [ x, x+C,x+1+C, x+1, jump]
               od
             od,
    MakePoly(sommets, faces),
    {WriteObj("test",sommets,faces)}
   ];

Graph objet1 = [
    DotStyle:=square, LabelSize:=footnotesize, Fenetre(-6+5*i,6-6.5*i,1+i), size(12,1),
    theta:=-139*deg, phi:=70*deg, ModelView(central),
    stock:=MakeSurf(),
    transformbox3d( rectangle3d(stock) ),
    drawWin3d(0),
    DrawFacet( stock, [color:=steelblue, smooth:=1]),
    drawWin3d(1),
    for x from Xinf to Xsup step (Xsup-Xinf)/4 do
       LabelDot( Proj3D(M(x,Yinf,Zinf)), Round(x,2), "SE",1)
    od,
    for y from Yinf to Ysup step (Ysup-Yinf)/4 do
       LabelDot( Proj3D(M(Xinf,y,Zinf)), Round(y,2), "SO",1)
    od,
    for z from Zinf to Zsup step (Zsup-Zinf)/4 do
       LabelDot( Proj3D(M(Xsup,Yinf,z)), Round(z,2), "E",1)
    od,
    LabelDot( Proj3D(M(Xsup,Yinf,(Zinf+Zsup)/2)), "z", "[1.5,1]"),
    LabelDot( Proj3D(M((Xinf+Xsup)/2,Yinf,Zinf)), "x", "[1.5,1-i]" ),
    LabelDot( Proj3D(M(Xinf,(Yinf+Ysup)/2,Zinf)), "y", "[1.5,-1-i]" ),
];
\end{texgraph}

\end{document}

La compilation latex+dvips+ps2pdf me donne liredata.pdf. L'affichage dans Acrobat reader est très lent à cause du lissage, on peut bien sûr désactiver le lissage (smooth:=0). Personnellement pour ce genre de figure avec beaucoup de lissage, j'aime autant une bonne image jpg ou png en haute résolution.

Je serai de retour ce soir, si vous avez des problèmes n'hésitez pas.

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Dessiner une surface en 3D à partir d'une matrice de cotes

Message  OlivierG le Ven 6 Mar - 17:55

Eh ben, c'est pas mal du tout !
La lenteur d'affichage ne me pose pas trop de problème par contre je ne sais pas s'il y a moyen de diminuer la résolution du graphique pour diminuer le poids du fichier (car j'aurai sûrement plusieurs surfaces dans mon document). Bon pour l'instant tout cela est secondaire.
J'essaie tout ça ce week-end. Je vous tiens au courant.

OlivierG

Nombre de messages : 4
Age : 31
Date d'inscription : 06/03/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Dessiner une surface en 3D à partir d'une matrice de cotes

Message  P.Fradin le Ven 6 Mar - 21:37

Re,

Je n'avais pas vu votre edit concernant la coloration, là ça se complique un peu au niveau de la programmation. Il y a deux façons de faire cette coloration, j'ai illustré les deux dans le document TeX suivant: liredata2.tex. Dans ce document j'ai fait un export pgf et une compilation pdflatex.

Le résultat: liredata2.pdf

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Dessiner une surface en 3D à partir d'une matrice de cotes

Message  OlivierG le Dim 8 Mar - 22:07

Bonsoir,

Merci pour la coloration.
Vous êtes peut-être déjà au courant, mais j'ai posté la même question sur le forum d'Asymptote pour avoir plusieurs solutions et retenir celle qui me semble la plus adaptée.

Bonne semaine et encore merci !

OlivierG

Nombre de messages : 4
Age : 31
Date d'inscription : 06/03/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Dessiner une surface en 3D à partir d'une matrice de cotes

Message  Contenu sponsorisé Aujourd'hui à 11:53


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum