Gestion des pointillés

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Gestion des pointillés

Messagepar Fabrice Couvreur » Mardi 25 Octobre 2011, 16:47

Bonjour à tous,
Dans le code ci-dessous :

Code: Tout sélectionner
import three;
import solids;
settings.outformat="pdf";
settings.pdfviewer="acroread";
settings.render=-1;
size(6cm,0);
usepackage("fourier");
pen p1=fontsize(6pt);
pen p2=1bp+black;
triple D=(0,0,0);
triple A=(1,0,0);
triple B=(1,1,0);
triple C=(0,1,0);
triple P=(0.5,0.5,3);
triple O=midpoint(A--C);
transform3 r=rotate(90,O,P);
triple I=point(A--B,0.3);
triple J=r*I;
triple K=r*J;
triple L=r*K;
draw(L--A--B--C--K);
draw(I--J--K--P--cycle^^P--J);
draw(L--D--K--cycle^^L--I^^P--L,dashed);
label("D",D,N,p1);
label("A",A,S,p1);
label("B",B,S,p1);
label("C",C,E,p1);
label("S",P,N,p1);
label("I",I,S,p1);
label("J",J,S+E,p1);
label("K",K,N+E,p1);
label("L",L,W+N,p1);
label("O",O,N,p1);
dot(O,p2);


une partie du segment[AD] doit être en pointillés. Je sais que je peux gérer cela à l'aide du menu d'OpenGl afin de bouger la figure à ma convenance et récupérer les données du positionnement.
Mais :

Code: Tout sélectionner
asy -V -wait "pyramide"
X Error of failed request:  GLXBadRenderRequest
  Major opcode of failed request:  153 (GLX)
  Minor opcode of failed request:  1 (X_GLXRender)
  Serial number of failed request:  1005562
  Current serial number in output stream:  1005565


C'est lié aux drivers graphiques, mais je ne vois pas la solution.
Merci.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 604
Inscription: Samedi 18 Août 2007, 00:55

Publicité

Re: Gestion des pointillés.

Messagepar GMaths » Mardi 25 Octobre 2011, 18:35

Bonjour,

Pas de telle erreur chez moi.

Une idée différente (de ce que tu cherches à faire) pour obtenir le point voulu :

2561ff27551f9a5aa0c24401a9e9ab62.png

Code: Tout sélectionner
import three;
size(8cm,8cm,IgnoreAspect);
currentprojection=orthographic(5,5,8);
pen p1=fontsize(6pt);
pen p2=1bp+blue;
triple D=(0,0,0), A=(1,0,0), B=(1,1,0), C=(0,1,0), P=(0.5,0.5,3);
triple O=midpoint(A--C);
transform3 r=rotate(90,O,P);
triple I=point(A--B,0.3);
triple J=r*I, K=r*J, L=r*K;
pair pt2d=extension(project(P),project(I),project(A),project(D));
triple pt3d=invert(pt2d,Z,O);
draw(pt3d--A--B--C--K);
draw(I--J--K--P--cycle^^P--J);
draw(pt3d--D--K--L--I^^P--L,dashed);
dot("Z",pt3d,NW,2bp+blue);
label("D",D,N,p1);
label("A",A,S,p1);
label("B",B,S,p1);
label("C",C,E,p1);
label("S",P,N,p1);
label("I",I,S,p1);
label("J",J,S+E,p1);
label("K",K,N+E,p1);
label("L",L,W+N,p1);
label("O",O,N,p1);
dot(O,p2);


Je fais coup double : en plus de t'aider, c'est un exemple d'utilisation du couple project/invert pour Maurice. ;-)

Rappel : quel que soit l'exemple, il y a toujours une ligne de trop quand tu écris ceci :
Code: Tout sélectionner
import three;
import solids;
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion des pointillés.

Messagepar maurice » Mardi 25 Octobre 2011, 21:51

Bonsoir,

GMaths a écrit:Je fais coup double : en plus de t'aider, c'est un exemple d'utilisation du couple project/invert pour Maurice. ;-)


bel exemple :

Code: Tout sélectionner
pair pt2d=extension(project(P),project(I),project(A),project(D));
triple pt3d=invert(pt2d,Z,O);


d'autant plus que je ne connaissais pas la routine extension

maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: Gestion des pointillés.

Messagepar GMaths » Mardi 25 Octobre 2011, 21:56

maurice a écrit:d'autant plus que je ne connaissais pas la routine extension

Cela a été mon premier exemple dans la rubrique "Intersections". ;-)
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion des pointillés.

Messagepar Fabrice Couvreur » Mardi 25 Octobre 2011, 22:41

Bonsoir,
Tout d'abord, merci pour ton aide.
J'ai quelque peu délaissé Asymptote ces derniers temps, et je dois m'y remettre sérieusement !
Ta solution est très élégante mais j'ai besoin de quelques explications si tu le veux bien.

Code: Tout sélectionner
size(8cm,8cm,IgnoreAspect);

Cela veut dire que l'image va tenir dans un carré de côté 8cm sans respecter le ratio ?

Code: Tout sélectionner
pair pt2d=extension(project(P),project(I),project(A),project(D));

project(P) retourne le projeté du point P sur le plan de l'écran ?
Les droites (AD) et (PI) ne sont pas coplanaires et donc non sécantes, mais Asymptote les considère sécantes en le point pt2d dans le plan de l'écran ?

Code: Tout sélectionner
triple pt3d=invert(pt2d,Z,O);]

"Conversion" d'un point du plan en un point de l'espace qui portant n'existe pas en réalité ??
Fabrice Couvreur
Giga-utilisateur
 
Messages: 604
Inscription: Samedi 18 Août 2007, 00:55

Re: Gestion des pointillés.

Messagepar GMaths » Mardi 25 Octobre 2011, 22:51

Fabrice Couvreur a écrit:
Code: Tout sélectionner
size(8cm,8cm,IgnoreAspect);

Cela veut dire que l'image va tenir dans un carré de côté 8cm sans respecter le ratio ?


Exactement ! C'était pour avoir une taille raisonnable sur ce forum, car il y a une limitation de la taille de l'image acceptée.
C'est un booléen égal à false. Un exemple ici : http://marris.org/asymptote/Size/index.html#fig_ba07_200208_size (avec d'autres exemples qui tentent d'expliquer quelques subtilités sur unitsize et size - j'en ai évoqué d'autres au stage LaTeX de Dunkerque qu'il faudra que je mette en ligne un de ces jours.).

Fabrice Couvreur a écrit:
Code: Tout sélectionner
pair pt2d=extension(project(P),project(I),project(A),project(D));

project(P) retourne le projeté du point P sur le plan de l'écran ?
Les droites (AD) et (PI) ne sont pas coplanaires et donc non sécantes, mais Asymptote les considère sécantes en le point pt2d dans le plan de l'écran ?


Tu as tout compris !

Fabrice Couvreur a écrit:
Code: Tout sélectionner
triple pt3d=invert(pt2d,Z,O);]

"Conversion" d'un point du plan en un point de l'espace qui portant n'existe pas en réalité ??


pt3D est le point dans le plan passant par O et de vecteur normal Z (autrement dit le plan portant la base de ta pyramide)... qui se projette sur l'écran en pt2D.
Dernière édition par GMaths le Mardi 25 Octobre 2011, 22:52, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion des pointillés.

Messagepar maurice » Mardi 25 Octobre 2011, 22:52

Fabrice Couvreur a écrit:
Code: Tout sélectionner
size(8cm,8cm,IgnoreAspect);

Cela veut dire que l'image va tenir dans un carré de côté 8cm sans respecter le ratio ?

exact

Fabrice Couvreur a écrit:
Code: Tout sélectionner
pair pt2d=extension(project(P),project(I),project(A),project(D));

project(P) retourne le projeté du point P sur le plan de l'écran ?
Les droites (AD) et (PI) ne sont pas coplanaires et donc non sécantes, mais Asymptote les considère sécantes en le point pt2d dans le plan de l'écran ?

Code: Tout sélectionner
triple pt3d=invert(pt2d,Z,O);]

"Conversion" d'un point du plan en un point de l'espace qui portant n'existe pas en réalité ??


J'ai eu du mal au départ avec invert et project : voir ici ou les exemples de la doc 3D (p32). Voici en gros ce qui y est dit

les commandes invert et project sont là pour faire le lien, entre les coordonnées triples d’un point dans l’espace et les
coordonnées doubles de la représentation de ce même point sur une feuille ou sur l’écran de votre ordinateur.
Elles permettent de faire un aller-retour entre des coordonnées différentes d’un seul et unique point, respectivement dans
un repère 3D et un repère 2D plaqué (sur la projection qui représente la situation 3D).
.

Le code de Gaétan est une belle application de ces deux routines.

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: Gestion des pointillés.

Messagepar GMaths » Mardi 25 Octobre 2011, 23:18

Fabrice Couvreur a écrit:J'ai quelque peu délaissé Asymptote ces derniers temps, et je dois m'y remettre sérieusement !

C'est ce que je me dis aussi.

Ta question m'a donné l'envie de rajouter des exemples dans la galerie "Solides" : des pyramides.
Je viens d'ajouter des exemples simples... avant d'ajouter plus tard un exemple pour mettre en application le trio de fonctions : extension/project/invert.

Et en faisant cela, j'ai réalisé avec cet exemple que je devais faire attention à l'ordre des faces pour que l'éclairage soit correct quand on a render>0 (sous réserve de ne pas vouloir faire tourner la figure).... alors que les positions relatives des faces sont bien gérées même si on change l'ordre de la définition des faces. Il y a une contradiction pour moi et quelque chose qui sera encore à améliorer dans Asymptote, selon moi.

J'apprends encore... et j'oublie vite si je ne pratique pas. Réviser Asymptote... ou approfondir tikz : quel dilemme ! :-)
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion des pointillés.

Messagepar Fabrice Couvreur » Mardi 25 Octobre 2011, 23:35

Re,
GMaths a écrit:j'en ai évoqué d'autres au stage LaTeX de Dunkerque

Habitant Lille, j'aurais dû venir car cela m'aurait beaucoup plu !

GMaths a écrit:C'était pour avoir une taille raisonnable sur ce forum, car il y a une limitation de la taille de l'image acceptée.

Justement, pour voir la figure sur le forum, j'avais essayé d'insérer le code entre les balises [asy][/asy], mais sans succès.

GMaths a écrit:pt3D est le point dans le plan passant par O et de vecteur normal Z (autrement dit le plan portant la base de ta pyramide)... qui se projette sur l'écran en pt2D.

C'est quand même très subtil et assez déroutant au premier abord !
Fabrice Couvreur
Giga-utilisateur
 
Messages: 604
Inscription: Samedi 18 Août 2007, 00:55

Re: Gestion des pointillés.

Messagepar GMaths » Mercredi 26 Octobre 2011, 09:36

Fabrice Couvreur a écrit:
GMaths a écrit:pt3D est le point dans le plan passant par O et de vecteur normal Z (autrement dit le plan portant la base de ta pyramide)... qui se projette sur l'écran en pt2D.

C'est quand même très subtil et assez déroutant au premier abord !

Je te l'accorde.

Asymptote a encore pas mal de manques... notamment la possibilité de mettre automatiquement les traits cachés d'une scène 3D en pointillés.
Le choix qui a été fait d'utiliser des transparences pour montrer les parties cachées (peut-être du fait de la compatibilité avec des formats de sorties (opengl, prc)) n'est pas toujours le mieux pour nous.

Pour les pointillés, il faut parfois ruser... et heureusement que l'on peut créer facilement des fonctions qui nous facilitent les choses. C'est là l'occasion d'en créer une !
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion des pointillés.

Messagepar GMaths » Mercredi 26 Octobre 2011, 20:34

GMaths a écrit:Ta question m'a donné l'envie de rajouter des exemples dans la galerie "Solides" : des pyramides.
Je viens d'ajouter des exemples simples... avant d'ajouter plus tard un exemple pour mettre en application le trio de fonctions : extension/project/invert.


Je n'ai pas encore ajouté l'exemple supplémentaire évoqué...

... mais j'en ai mis un autre qui me semble pas inintéressant... même s'il peut paraitre aussi déroutant à ceux qui aspirent à une solution simple pour obtenir la partie cachée du cercle.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 22 invités

cron