Page 1 sur 2

Le modèle CourbesNiv.mod

MessagePublié: 23 Avr 2010 11:17
par P.Fradin
Le modèle CourbesNiv est une transformation en modèle du fichier exemple CourbesNiv.teg (qui ne sera donc plus dans la prochaine version) . Ce modèle permet le dessin d'une surface cartésienne (ou paramétrée) avec des courbes de niveaux z= dans différents styles, des sections planes sont également possibles, ainsi que différentes vues.

Ce modèle peut se charger dans l'interface graphique, avec un menu identique à celui du fichier exemples. Mais il peut aussi s'utiliser directement dans un document LaTeX, des macros de construction ont été ajoutées à cet effet (voir le fichier pdf).

Télécharger: CourbesNiv.zip ( version 0.6 du 14/07/12)

Le paquet contient 4 fichiers:

- CourbesNiv.mac (macros)
- CourbesNiv.mod (modèle à charger)
- CourbesNiv.pdf (aide)
- CourbesNiv.txt (à lire)

Les questions/propositions concernant ce modèle sont à poster dans ce forum.

Un exemple dans un document LaTeX:

Code: Tout sélectionner
\begin{texgraph}[preload="CourbesNiv.mod"]
Marges(0,0,0,0), view(-10,10,-11,8), size(9),  theta:=220*deg,
surface( "(x+y)/(2+sin(y)*cos(x))", [ grille:=[0,5,0,10,30,30] ]),
fenetre( [x:=[0,5], y:=[0,10], z:=[0,11], pas:=[1,2,1], orthonorme:=1] ),
niveaux( for k from 1 to 10 do k od ), legende("$\frac{x+y}{2+\sin(y)\cos(x)}$"),
sections( [ M(2,5,5), -M(0,-1.5,1)] ),
voirboite:=1, voirtraces:=1, traitscaches:=noline,
afficher(),
DrawFacet(getplan( [ M(2,5,5), -M(0,-1.5,1)]), [color:=darkseagreen, FillOpacity:=0.4])
\end{texgraph}


essai.png
essai.png (52.95 Kio) Consulté 65581 fois

Re: Le modèle CourbesNiv.mod

MessagePublié: 23 Avr 2010 14:01
par projetmbc
Merci c'est super.

Une petite question : peut-on utiliser une perspective cavalière ?

Re: Le modèle CourbesNiv.mod

MessagePublié: 23 Avr 2010 14:33
par P.Fradin
Il n'y a que deux types de projections définies par défaut dans TeXgraph: la projection orthographique, et la projection centrale. Pour le reste, il faut modfier soi-même la matrice 3d.

Re: Le modèle CourbesNiv.mod

MessagePublié: 23 Avr 2010 20:14
par projetmbc
C'est noté. Merci.

Re: Le modèle CourbesNiv.mod

MessagePublié: 23 Avr 2010 23:02
par Alphonse Capriani
Salut Tout le monde (Et non : je ne suis pas mort! :roll: )

Aah aaaaahhhh! une mise à jour de CourbesNiv.teg. Encore mieux : un fichier *.mac avec une doc PDF!!!

Je me jette la dessus ce week-end, et je vous fait part de mes remarques prochainement...

A ce sujet, le fichier Cristallo.mac progresse : j'ai (enfin) bouclé les pavages de polygones régulier, et j'ai entamé les Pavages de Penrose. A ce sujet, j'ai un truc à te demander Patrick, mais pour ca, je vais peut être créer un nouveau sujet...

Re: Le modèle CourbesNiv.mod

MessagePublié: 23 Avr 2010 23:22
par projetmbc
Je viens de parcourir rapidement la doc. L'exemple que tu as mis ici m'intéresse beaucoup en vue d'une utilisation sur le net. Je vais utiliser ceci pour imiter un scanner de surface. Peut-on faire ressortir dans la figure ci-dessus la section en rouge et gras par exemple ?

Re: Le modèle CourbesNiv.mod

MessagePublié: 24 Avr 2010 10:15
par P.Fradin
projetmbc a écrit:Peut-on faire ressortir dans la figure ci-dessus la section en rouge et gras par exemple ?


Oui, en faisant calculer l'intersection entre la surface et le plan. Il faut savoir (ce n'est pas dans la doc) que c'est l'instruction afficher() qui calcule la surface et lui fait subir les éventuelles sections, la surface est ensuite stockée dans la variable prédéfinie stock.

On peut ajouter, après l'instruction afficher(), les intructions suivantes (en mettant le plan dans une variable plan):

Code: Tout sélectionner
L:=ClipFacet(stock, plan, derriere, bord),
Color:=red, Width:=12, Ligne3D(bord,0), Width:=4, Color:=black,


Ce qui donne finalement:

Code: Tout sélectionner
\begin{texgraph}[preload="CourbesNiv.mod"]
Marges(0,0,0,0), view(-10,10,-11,8), size(9),  theta:=220*deg,
surface( "(x+y)/(2+sin(y)*cos(x))", [ grille:=[0,5,0,10,30,30] ]),
fenetre( [x:=[0,5], y:=[0,10], z:=[0,11], pas:=[1,2,1], orthonorme:=1] ),
niveaux( for k from 1 to 10 do k od ), legende("$\frac{x+y}{2+\sin(y)\cos(x)}$"),
plan:= [ M(2,5,5), -M(0,-1.5,1)], sections( plan ),
voirboite:=0, voirtraces:=0, traitscaches:=noline, afficher(),

L:=ClipFacet(stock, plan, derriere, bord),
Color:=red, Width:=12, Ligne3D(bord,0), Width:=4, Color:=black,

DrawFacet(getplan(plan), [color:=darkseagreen, FillOpacity:=0.4])
\end{texgraph}


bord.png
bord.png (41.85 Kio) Consulté 65504 fois

Re: Le modèle CourbesNiv.mod

MessagePublié: 24 Avr 2010 12:32
par projetmbc
Merci.

Re: Le modèle CourbesNiv.mod

MessagePublié: 25 Avr 2010 00:32
par phil pham
Bonsoir,

J'ai un petit soucis avec la fonction vue().

Afin d'afficher les projections sur le plan yOz, il m'est nécessaire de lancer d'abord vue(xOy) avant. Par exemple, le code suivant ne correspond pas à ce que je veux:

Code: Tout sélectionner
\begin{texgraph}[name=paraboloide-yOz,preload="CourbesNiv.mod"]
Marges(0,0,0,0), view(-6,6,-7,6), size(10),
surface( "[x^2+y^2]", [ grille:=[-2,2,-2,2,20,20] ]),
fenetre( [x:=[-2,2], y:=[-2,2], z:=[0,8], pas:=[1,1,1], orthonorme:=1] ),
vue(yOz),
afficher(),
\end{texgraph}


alors que celui-ci oui:

Code: Tout sélectionner
\begin{texgraph}[name=paraboloide-yOz,preload="CourbesNiv.mod"]
Marges(0,0,0,0), view(-6,6,-7,6), size(10),
surface( "[x^2+y^2]", [ grille:=[-2,2,-2,2,20,20] ]),
fenetre( [x:=[-2,2], y:=[-2,2], z:=[0,8], pas:=[1,1,1], orthonorme:=1] ),
vue(xOy), vue(yOz),
afficher(),
\end{texgraph}


Le fichier latex et le fichier pdf obtenu : tex et pdf

Cordialement, phil

Re: Le modèle CourbesNiv.mod

MessagePublié: 25 Avr 2010 10:27
par P.Fradin
Mise à jour du modèle (version 0.2) dans le post initial. Le problème de la macro vue est résolu.

Re: Le modèle CourbesNiv.mod

MessagePublié: 25 Avr 2010 11:47
par phil pham
Bonjour,

Merci pour la correction rapide. Un autre soucis avec ce modèle : l'ouverture par l'interface graphique de TeXgraph des fichiers teg créés par un script latex . Cela n'est peut-être pas fait pour ?
Je précise mon configuration: système linux (debian), TeXgraph version 1.94 installé dans /usr/local, modèle CourbesNiv.mod installé dans $HOME/TeXgraphMac

Le code suivant
Code: Tout sélectionner
 
\begin{texgraph}[name=paraboloide-boite,export=pgf,preload="CourbesNiv.mod"]
Marges(0,0,0,0), view(-6,6,-7,6), size(10),
voirboite:=1,
surface( "[x^2+y^2]", [ grille:=[-2,2,-2,2,20,20] ]),
fenetre( [x:=[-2,2], y:=[-2,2], z:=[0,8], pas:=[1,1,1], orthonorme:=1] ),
niveaux( for k from 1 to 8 do k od ),
afficher(),
\end{texgraph}


permet d'obtenir le fichier teg

Code: Tout sélectionner
18##InputMac("CourbesNiv.mod")##
14#image#[
Marges(0,0,0,0), view(-6,6,-7,6), size(10),
voirboite:=1,
surface( "[x^2+y^2]", [ grille:=[-2,2,-2,2,20,20] ]),
fenetre( [x:=[-2,2], y:=[-2,2], z:=[0,8], pas:=[1,1,1], orthonorme:=1] ),
niveaux( for k from 1 to 8 do k od ),
afficher(),
]##


- si j'effectue un clic droit pour l'ouvrir avec startTeXgraph, j'obtiens le message d'erreur suivant:
erreur1.png
erreur1.png (12.26 Kio) Consulté 65441 fois

Une validation par «OK» lance TeXgraph mais sans ouvrir le fichier.

- si je lance d'abord TeXgraph et l'utilise pour ouvrir ce fichier, la fenêtre suivante apparaît
erreur2.png
erreur2.png (41.09 Kio) Consulté 65442 fois

Dans ce cas, la touche «Cancel» permet d'obtenir la figure mais la touche «OK» donne à priori deux images superposées (des clics successifs sur «Changer la vue» permet d'effacer l'image superflue).
erreur3.png
erreur3.png (64.32 Kio) Consulté 65441 fois


- Maintenant, si je crée un fichier teg à partir d'une latex contenant vue(xOy), avec la suite d'erreurs signalées, le fichier s'ouvre, un clic sur «Changer la vue» donne une superposition de deux images: le solide en 3D et la projection sur le plan, d'autres clics sur le même bouton ne donne plus rien.

Re: Le modèle CourbesNiv.mod

MessagePublié: 25 Avr 2010 12:59
par P.Fradin
phil pham a écrit:Bonjour,


Bonjour Phil,

Merci pour la correction rapide. Un autre soucis avec ce modèle : l'ouverture par l'interface graphique de TeXgraph des fichiers teg créés par un script latex . Cela n'est peut-être pas fait pour ?


Le modèle ouvert par l'interface graphique va de lui-même créer un élément graphique qui s'appelle dessin. Effectivement, ce n'est pas prévu pour ouvrir des fichiers teg créés par un script LaTeX. Par contre ce que tu peux faire, c'est lancer l'interface graphique, charger le modèle CourbesNIv.mod, tu verras l'élément graphique dessin se créer, ouvre le et remplace la commande par la commande que tu avais mis dans l'environnement TeXgraph, à savoir pour ton exemple:

Code: Tout sélectionner
[
Marges(0,0,0,0), view(-6,6,-7,6), size(10),
voirboite:=1,
surface( "[x^2+y^2]", [ grille:=[-2,2,-2,2,20,20] ]),
fenetre( [x:=[-2,2], y:=[-2,2], z:=[0,8], pas:=[1,1,1], orthonorme:=1] ),
niveaux( for k from 1 to 8 do k od ),
afficher()
]


et normalement c'est bon (je viens de tester).


- si j'effectue un clic droit pour l'ouvrir avec startTeXgraph, j'obtiens le message d'erreur suivant:
erreur1.png

Une validation par «OK» lance TeXgraph mais sans ouvrir le fichier.


Je n'ai pas ce message d'erreur avec la version 1.94 sur mon système (Ubuntu 8.04). Il y a eu des correctifs pour les macros de la version 1.94, tu les avais chargés?

- si je lance d'abord TeXgraph et l'utilise pour ouvrir ce fichier, la fenêtre suivante apparaît
erreur2.png

Dans ce cas, la touche «Cancel» permet d'obtenir la figure mais la touche «OK» donne à priori deux images superposées (des clics successifs sur «Changer la vue» permet d'effacer l'image superflue).
erreur3.png


- Maintenant, si je crée un fichier teg à partir d'une latex contenant vue(xOy), avec la suite d'erreurs signalées, le fichier s'ouvre, un clic sur «Changer la vue» donne une superposition de deux images: le solide en 3D et la projection sur le plan, d'autres clics sur le même bouton ne donne plus rien.


C'est parce qu'il y a déjà un élément appelé dessin qui est automatiquement créé par le modèle dans l'interface graphique. Du coup tu as deux éléments graphiques!

Re: Le modèle CourbesNiv.mod

MessagePublié: 25 Avr 2010 16:53
par phil pham
Salut,

P.Fradin a écrit:
- si j'effectue un clic droit pour l'ouvrir avec startTeXgraph, j'obtiens le message d'erreur suivant:
erreur1.png

Une validation par «OK» lance TeXgraph mais sans ouvrir le fichier.


Je n'ai pas ce message d'erreur avec la version 1.94 sur mon système (Ubuntu 8.04). Il y a eu des correctifs pour les macros de la version 1.94, tu les avais chargés?


Je viens de mettre à jour les macros mais le problème est toujours présent. A noter que cela ne se passe qu'avec un fichier demandant le chargement de la macro (ou d'une macro?) et provenant d'une source latex. Voici pour information les messages affichés lors d'un lancement en console

** En user:

- Texgraph 1.94 installé en /usr/local

Code: Tout sélectionner
phil@dell:~$ startTeXgraph /home/phil/mesdocs/lycee/TS/1-cours/spe/5-surfaces/3_paraboloide/paraboloide-boite.teg
[WARNING] Out of OEM specific VK codes, changing to unassigned
TApplication.HandleException Access violation
  Stack trace:
  $0000000000490BEA
  $0000000000530135
  $0000000000534120
  $0000000000688128
  $000000000052E489
  $000000000048DD32
  $0000000000537425
  $000000000053D2AE
  $000000000048C6B2
  $000000000048FBB0
  $000000000049135E
  $0000000000827DD0
  $000000000078826B
  $0000000000769253
  $0000000000745F29
  $0000000000769253
  $0000000000738E09


si j'appuie sur «Cancel»

Code: Tout sélectionner
TGtkWidgetSet.DeleteObject GdiObject=00007F4D72AEFAA0 gdiPen is still used. DCCount=1
DC: 00007F4D6B0BF020 nil
TGtkWidgetSet.DeleteObject GdiObject=00007F4D72AEFD20 gdiBrush is still used. DCCount=1
DC: 00007F4D6B0BF020 nil
[TGtkWidgetSet.Destroy] WARNING: There are 1 unreleased DCs, a detailed dump follows:
[TGtkWidgetSet.Destroy]  DCs:   00007F4D6B0BF020
[TGtkWidgetSet.Destroy] WARNING: There are 6 unreleased GDIObjects, a detailed dump follows:
[TGtkWidgetSet.Destroy]   GDIOs: 00007F4D72AEFDA0 00007F4D72AEF520 00007F4D72AEFAA0 00007F4D72AEFC20 00007F4D72AEFD20 00007F4D72AEFCA0
[TGtkWidgetSet.Destroy]   gdiBitmap: 2
[TGtkWidgetSet.Destroy]   gdiBrush: 2
[TGtkWidgetSet.Destroy]   gdiPen: 2


- avec TeXgraph 1.95 (non installé, juste décompressé), même type de message

** en root, idem avec les 2 versions.

Bon cela dit, comme tu le précises, ce n'est pas prévu pour ouvrir des fichiers teg créés par un script LaTeX
;)

Re: Le modèle CourbesNiv.mod

MessagePublié: 25 Avr 2010 17:19
par P.Fradin
phil pham a écrit:Bon cela dit, comme tu le précises, ce n'est pas prévu pour ouvrir des fichiers teg créés par un script LaTeX
;)


Oui mais quand même, on devrait avoir le même comportement du programme l'un et l'autre! Et ce n'est pas le cas! Peux-tu vérifier l'encodage des fichiers teg créés par un script LaTeX (mais je n'y crois pas trop)? Cela viendrait-il de nos deux systèmes qui ne sont pas exactement les mêmes?

Re: Le modèle CourbesNiv.mod

MessagePublié: 27 Avr 2010 00:34
par phil pham
Salut,

La commande
Code: Tout sélectionner
file
me renvoie ASCII text.

Ma distribution est une debian version testing mais avec un noyau et un xorg stable (une sombre histoire de carte graphique...), le tout sous amd64. Je testerai sur une ubuntu (la version pour minidell) ce week end et te tiens au courant.

Re: Le modèle CourbesNiv.mod

MessagePublié: 27 Avr 2010 07:57
par P.Fradin
Je viens d'obtenir l'erreur signalée en voulant lancer le ficher teg à la souris ou en ligne de commande, par contre le même fichier lu depuis l'interface ne provoque pas d'erreur! D'autre part, le même fichier exécuté en ligne de commande avec la version non GUI ne provoque pas d'erreur non plus, voilà qui est très curieux... J'essaie de creuser.

Re: Le modèle CourbesNiv.mod

MessagePublié: 27 Avr 2010 17:22
par P.Fradin
P.Fradin a écrit:J'essaie de creuser.


C'est bon, l'erreur a été trouvée! C'est l'instruction Input dans CourbesNiv.mod qui suppose que l'interface graphique est déjà construite et ce n'est pas le cas lorsqu'on ouvre le fichier en ligne de commande. Ce sera réparé pour la prochaine version test. Merci Phil pour avoir rapporté ce bug.

Re: Le modèle CourbesNiv.mod

MessagePublié: 29 Avr 2010 11:09
par P.Fradin
Mise à jour du modèle dans le post initial (version 0.3).

Re: Le modèle CourbesNiv.mod

MessagePublié: 12 Mai 2010 15:25
par Alphonse Capriani
Tiens! J'observe un léger disfonctionnement de CourbesNiv.mod (en fait il s'agit d'un trait parasite)

Voici une capture d'écran :

Image


J'ai utiliser la fonction de la doc (le point selle). Mais de toute facon, j'obtient un truc similaire quel que soit la fonction.

Re: Le modèle CourbesNiv.mod

MessagePublié: 12 Mai 2010 15:44
par P.Fradin
Salut Alphonse,

Je pense à priori que cela correspond aux facettes dont le vecteur normal est quasiment orthogonal au vecteur caméra-facette.

Re: Le modèle CourbesNiv.mod

MessagePublié: 12 Mai 2010 15:45
par Alphonse Capriani
Et ya moyen de corriger tout ca?

Re: Le modèle CourbesNiv.mod

MessagePublié: 12 Mai 2010 15:52
par P.Fradin
Déjà, tu peux supprmer le lissage ;)

test.png
test.png (25.38 Kio) Consulté 65238 fois

Re: Le modèle CourbesNiv.mod

MessagePublié: 26 Août 2011 14:40
par P.Fradin
Mise en ligne de la version 0.5.

Ajout d'un style "continu" dans la coloration de la surface en fonction de z, comme le style "chaleur", mais en utilisant la palette modifiable par l'utilisateur:
styleNiv := styleCont

Code: Tout sélectionner
[
Marges(0, 0, 0, 0), view(-10, 10, -11, 8), size(9), theta :=220*deg,
surface( "(x+y)/(2+sin(y)*cos(x))", [ grille :=[0, 5, 0, 10, 30, 60] ]),
fenetre( [x :=[0, 5], y :=[0, 10], z :=[0, 11], pas :=[1, 2, 1], orthonorme :=1] ),
legende("$\frac{x+y}{2+\sin(y)\cos(x)}$"),
palette:=[black, darkgray, gray, lightgray, white], styleNiv :=styleCont,
afficher([],[],[LineStyle:=noline])
]

courbesniv.png
courbesniv.png (36.73 Kio) Consulté 64427 fois

Re: Le modèle CourbesNiv.mod

MessagePublié: 08 Mai 2012 21:25
par Joffrey
Bonsoir,

Comment faire pour que dans le graphique suivant, la légende de chaque axe soit $x$, $y$ et $z$ ?
Il me semble avoir déjà posé la question, mais je ne retrouve pas le post.
Code: Tout sélectionner
[
theta:=300*deg,phi:=65*deg,
Marges(0, 0, 0, 0), view(-10,10, -11, 8), size(18),
surface("(x*y)/4", [grille :=[0, 10, 0, 8, 11, 11] ]),
fenetre([x:=[0, 10], y:=[0,8], z:=[0,20], pas:=[1,1,2], orthonorme:=0] ),
legende(),
niveaux(for k from 2 to 20 step 2 do k od ,
        [orange, gray, white, orange, gray, white, orange, gray, white, orange, gray]) ,
afficher(),


Merci

Re: Le modèle CourbesNiv.mod

MessagePublié: 08 Mai 2012 21:54
par P.Fradin
Bonsoir,

Code: Tout sélectionner
    afficher([newxlegend("$x$"),newylegend("$y$"),newzlegend("$z$")], [], [])