Bonjour,
Après avoir recherché sur le forum, je n'ai pas trouvé de réponse à ma question.
Je ne sais pas si la rubrique est appropriée mais je n'en ai pas trouvée de meilleure.
Je suis totalement débutant en écriture de macro TeX mais j'ai un peu d'expérience dans l'utilisation "lambda" (écriture de documents) de ce programme. Donc ne vous moquez pas si je parais trop naïf
A l'aide de macros des packages pstricks, pstricks-add et pstricks dédié à la 3D, je voudrais écrire une macro pour dessiner une surface en 3D définie non pas par une fonction paramétrique mais par une matrice de points située dans un fichier externe. J'ai déjà cherché dans les fichiers d'aide des packages nommés plus hauts mais il n'existe pas encore de fonction pour tracer des nappes non paramétriques. Vu le peu d'expérience que j'ai dans l'écriture de macro, je voudrais commencer par simplement relier les points selon l'axe des abscisses puis selon celui des ordonnées, avec une seule couleur. L'idéal serait évidemment d'avoir une surface pleine avec un joli dégradé de couleurs comme dans GNUPLOT ou MATLAB, mais je n'en suis pas encore là
Avant le programme, la structure du fichier externe:
- première ligne: liste des abscisses séparées par des tabulations ou autres caractères;
- seconde ligne: liste des ordonnées;
- à partir de la troisième ligne, la matrice des cotes avec sur une ligne les cotes pour une abcisse donnée, et sur une colonne, les cotes pour une ordonnée donnée;
Le squelette de mon programme:
- on lit les deux premières lignes du fichier pour déterminer le nombre de points en abcisses et en ordonnées;
- à partir de la troisième ligne on enregistre dans des macros variables indicées par les numéros de ligne et de colonne les cotes lues dans le fichier;
- on boucle une première fois sur les abscisses à ordonnée constante puis sur les ordonnées en reliant les points (il existe déjà une fonction pour tracer des lignes en 3D).
Malheureusement, je bloque à la ... première étape. En fait je sais comment lire une ligne d'un fichier externe mais je ne sais pas comment lire et enregistrer chacun des éléments d'une ligne séparés par un délimiteur donné.
Si quelqu'un savait, je lui en serais très reconnaissant
Je mets mon début (mais alors vraiment le début) de code pour vous montrer que je ne suis pas un feignant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 \def\essai#1{ %Première passe pour déterminer le nombre de lignes du fichier \newread\fichier \openin\fichier=#1 \newcount\nlignes\nlignes=0 \newcount\finfichier\finfichier=0 \loop\ifnum\finfichier=0 \read\fichier to \data \ifeof1\finfichier=1\fi \advance\nlignes by 1 %compte en réalité une ligne de plus \repeat \closein\fichier \typeout{Nombre de lignes = \the\nlignes} %Seconde passe pour lire les lignes du fichier \newread\fichier \openin\fichier=#1 \newcount\comptelignes\comptelignes=1 \loop\ifnum\comptelignes<\nlignes \read\fichier to \data \typeout{Mon compteur = \the\comptelignes = \data} \advance\comptelignes by 1 \repeat \closein\fichier }
Partager