Joindre deux path3

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.

Joindre deux path3

Messagepar MB » Dimanche 16 Mai 2010, 16:53

Bonjour, une petite question concernant Asymptote. Voici le code suivi de la figure produite :

Code: Tout sélectionner
unitsize(1.25cm);

import solids;
settings.render = 0;
settings.prc = false;

currentprojection = orthographic(15,2,2);
currentlight = nolight;

real a = 2, b = 3.2, c = 2, k = 0.7, h = a*sin(pi*(k-0.5));

revolution r = sphere(O,a);

draw(r,1,longitudinalpen=nullpen);
draw(r.silhouette());

triple pI = (0,0,h);

path3 p = (b,c,h)--(-b,c,h)--(-b,-c,h)--(b,-c,h)--cycle;
path3 c = circle(pI,a*cos(pi*(k-0.5)));
draw(surface(p),grey+opacity(0.5));
draw(surface(c),white);

skeleton s;
r.transverse(s,reltime(r.g,k));
draw(s.transverse.front,solid+black);
draw(s.transverse.back,dashed+black);

dot(Label("$O$",W),O);
dot(Label("$I$",W),pI);

shipout(bbox(xmargin=1mm,invisible));


asy_sphère_plan.png


On constate que la section de la sphère par le plan est représentée de deux façons dans le code. La première est la suivante :

Code: Tout sélectionner
path3 c = circle(pI,a*cos(pi*(k-0.5)));


Je l'utilise pour colorer le disque en blanc via draw et surface. La seconde est la suivante :

Code: Tout sélectionner
skeleton s;
r.transverse(s,reltime(r.g,k));


Elle est utilisée pour tracer les contours de la section en traits pleins ou discontinus. La partie visible est représentée par s.transverse.front et la partie cachée par s.transverse.back qui sont tous deux de type path3.

La question que je me pose est la suivante : comment faire pour joindre les deux s.transverse afin d'obtenir le cercle c ?
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Asymptote] Joindre deux path3

Messagepar GMaths » Dimanche 16 Mai 2010, 17:15

MB a écrit:La partie visible est représentée par s.transverse.front et la partie cachée par s.transverse.back qui sont tous deux de type path3.

Pas tout à fait : des tableaux de path3.

Essayer ceci :

Code: Tout sélectionner
unitsize(5cm);

import solids;
settings.render = 0;
settings.prc = false;

currentprojection = orthographic(15,2,2);
currentlight = nolight;

real a = 2, b = 3.2, c = 2, k = 0.7, h = a*sin(pi*(k-0.5));
revolution r = sphere(O,a);
triple pI = (0,0,h);
path3 p = (b,c,h)--(-b,c,h)--(-b,-c,h)--(b,-c,h)--cycle;
skeleton s;

r.transverse(s,reltime(r.g,k));

path3 ce = s.transverse.front[0]..s.transverse.back[0]..cycle;
draw(surface(reverse(p)^^ce,planar=true),grey+opacity(0.5));
//draw(surface(c),white);
draw(r,1,longitudinalpen=nullpen);
draw(r.silhouette());
draw(s.transverse.front,solid+black);
draw(s.transverse.back,dashed+black);
   
dot(Label("$O$",W),O);
dot(Label("$I$",W),pI);

shipout(bbox(xmargin=1mm,invisible));


J'ai renommé c qui était déjà utilisé.

Pour colorer, j'ai utilisé la technique de l'exemple suivant.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Joindre deux path3

Messagepar MB » Dimanche 16 Mai 2010, 17:24

GMaths a écrit:Pas tout à fait : des tableaux de path3.


Bon bah en effet c'était juste ça. Je pensais que c'était du type path3.
Merci en tous cas, ça fonctionne parfaitement et c'est quand même mieux que de passer par circle je trouve (même si c'était pas bien grave non plus).
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Joindre deux path3

Messagepar GMaths » Dimanche 16 Mai 2010, 17:29

MB a écrit:
GMaths a écrit:Pas tout à fait : des tableaux de path3.


Bon bah en effet c'était juste ça. Je pensais que c'était du type path3.

Je ne le savais plus non plus...
... donc j'ai d'abord essayé :
Code: Tout sélectionner
path3 ce = s.transverse.front..s.transverse.back..cycle;

et le message d'erreur en console NotePad++ m'a rafraichi la mémoire. ;-)
Code: Tout sélectionner
18.30: no matching function 'operator ..(path3[], path3[])'
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Joindre deux path3

Messagepar MB » Dimanche 16 Mai 2010, 17:35

Je n'avais pas vu la modification pour la coloration.
C'est vrai que j'avais aussi cherché une façon de faire ça en une seule commande (type evenodd).

Je vais essayer de voir comment ça fonctionne. :)

Edit : oui, c'est bizarre que le message d'erreur ne m'ait pas mis sur la piste car je crois bien avoir essayé la même commande que toi au départ ...
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Joindre deux path3

Messagepar GMaths » Dimanche 16 Mai 2010, 17:39

MB a écrit:Je n'avais pas vu la modification pour la coloration.

L'exemple que j'ai donné est un de ceux que j'avais proposés lors de cette discussion.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

Qui est en ligne

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