Deux questions

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.

Deux questions

Messagepar rebouxo » Mercredi 19 Décembre 2007, 12:36

Amis du mercredi, bien le bonjour.

Comme annoncé dans le titre j'ai deux questions.
Première question :
le code suivant m'envoie braire et m'insulte copieusement. Et je ne comprend pas pourquoi.

Code: Tout sélectionner
\begin{asy}
import solids ;
import three ;
//import math ;
size(5cm,0) ;
currentprojection=obliqueX;
real h=2 ;
transform3 tT=shift((0,0,-0.25*h));
triple A =(0,0,h) ;
triple B=(h,0,0) ;
triple C=(0,h,0) ;
triple D=(0,0,0) ;
triple I = midpoint(A--C);
triple J = midpoint(A--B);
triple L =midpoint(B--C) ;
triple K=tT*A,
M=intersectionpoint(K--J,D--B);
// Les labels
dot(Label("$A$",align=N),A);
dot(Label("$B$",align=S),B);
dot(Label("$C$",align=S),C);
dot(Label("$D$",align=W),D);
dot(Label("$I$",align=N),I);
dot(Label("$J$",align=W),J);
dot(Label("$K$",align=E),K);
dot(Label("$L$",align=SE),L);
dot(Label("$M$",align=SE),M);
// les segments
draw(A--B--C--cycle3) ;
draw(A--D--C,dashed) ;
draw(D--B,dashed) ;
\end{asy}


Le problème se situe au niveau de l'intersection des droites $(KJ)$ et $(DB)$. Mais Asymptote prétend que ces droites ne sont pas sécantes. Or, elles devraient l'être, nom d'un p'tit Pythagore.
Je suppose que M. Asymptote ne considère que des segments. Donc comment je fais ?

Deuxième question :

Code: Tout sélectionner
\begin{asy}
import solids ;
import three ;
//orthographic((1,0,0),(0,0,1));
currentprojection=obliqueX(45);
size(12cm,0);
guide3 v1=(0,1,0)..(0,0,1)..(0,-1,0)..(0,0,-1)..cycle;
filldraw(v1,mediumgrey);
guide3 v2=(0,0,1)..(0.707,-0.5,0)..(0,0,-1)--cycle;
filldraw(v2,mediumgrey);
guide3 v3=(0,0,1)..(0.707,0.5,0)..(0,0,-1)--cycle;
filldraw(v3,lightgrey);
\end{asy}


Ici, ce n'est pas un problème proprement d'asymptote, mais de représentation dans l'espace. Je fais une représentation d'une sphère : j'ai donc un plan vertical de face et au fond, et je veux deux plans verticaux symétrique par rapport au plan $(Oxz)$. Bon, j'ai l'impression de ne pas mettre planter dans les coordonnées. Mais par contre je galère avec la perspective (je pense). Est-ce que quelqu'un aurait une idée ?

Olivier
rebouxo
Modérateur
 
Messages: 6938
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Asymptote] Deux questions sur

Messagepar MB » Mercredi 19 Décembre 2007, 15:39

rebouxo a écrit:Le problème se situe au niveau de l'intersection des droites $(KJ)$ et $(DB)$. Mais Asymptote prétend que ces droites ne sont pas sécantes. Or, elles devraient l'être, nom d'un p'tit Pythagore.
Je suppose que M. Asymptote ne considère que des segments. Donc comment je fais ?


Oui, il ne prend en compte que les segments.
Soit tu utilises la structure line (de geometry_dev) soit tu rallonges tes segments à l'aide de interp.
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] Deux questions sur

Messagepar rebouxo » Mercredi 19 Décembre 2007, 16:05

geometry_dev fonctionne-t-elle en 3D ? parce que il veut pas de mon interception.

Olivier
rebouxo
Modérateur
 
Messages: 6938
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Deux questions sur

Messagepar MB » Mercredi 19 Décembre 2007, 16:14

rebouxo a écrit:geometry_dev fonctionne-t-elle en 3D ?


Non pas en 3d en effet.
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] Deux questions sur

Messagepar MB » Mercredi 19 Décembre 2007, 16:23

Avec interp :

Code: Tout sélectionner
M=intersectionpoint(K--interp(K,J,10),D--interp(D,B,10));
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] Deux questions sur

Messagepar rebouxo » Mercredi 19 Décembre 2007, 16:36

Heee haaaa. Merci, MB. Cela fonctionne.

Euh, on peut le mettre sur le Wiki, avec un ch'ti commentaire au niveau de l'intersection.
Les renseignements sur asymptote, sont comment dire, parcellaire.

Olivier
rebouxo
Modérateur
 
Messages: 6938
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Deux questions sur

Messagepar Ph. Ivaldi » Mercredi 19 Décembre 2007, 20:01

MB a écrit:Avec interp :
Code: Tout sélectionner
M=intersectionpoint(K--interp(K,J,10),D--interp(D,B,10));

Bip bip !
Puisque le point M est utilisé en tant que pair on peut se permettre un chti
Code: Tout sélectionner
pair M=extension(K,J,D,B);

Pour récupérer « proprement » :roll: un triple il suffit d'injecter le « temps » t de l'intersection de la droite (KJ) avec le plan (BCD) dans interp(K,J,t). Cela donne:
Code: Tout sélectionner
triple M=interp(K,J,intersect(K,J,normal(new triple[]{B,C,D}),D));

Explications:
  • interp marche aussi pour les triples.
  • Dans la documentation de math.asy il y a:
    real intersect(triple P, triple Q, triple n, triple Z)
    Return the intersection time of the extension of the line segment PQ
    with the plane perpendicular to n and passing through Z.
  • Enfin, directement dans le fichier math.asy on peut voir:
    // Compute normal vector to the plane defined by the first 3 elements of p.
    triple normal(triple[] p)
Dans le cas qui nous occupe on aurait pu remplacer normal(new triple[]{B,C,D}) par un simple Z.
Voilà... j'espère ne pas avoir dit de bêtises...
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Deux questions sur

Messagepar Ph. Ivaldi » Mercredi 19 Décembre 2007, 20:04

J'ai oublié de préciser import math ;
Bien sûr :)
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Deux questions sur

Messagepar Ph. Ivaldi » Mercredi 19 Décembre 2007, 20:16

rebouxo a écrit:Ici, ce n'est pas un problème proprement d'asymptote, mais de représentation dans l'espace. Je fais une représentation d'une sphère : j'ai donc un plan vertical de face et au fond, et je veux deux plans verticaux symétrique par rapport au plan $(Oxz)$. Bon, j'ai l'impression de ne pas mettre planter dans les coordonnées. Mais par contre je galère avec la perspective (je pense). Est-ce que quelqu'un aurait une idée ?

Je ne suis pas sûr d'avoir compris.
Ne voulais-tu pas écrire currentprojection=orthographic((1,0,0),(0,0,1));
au lieux de orthographic((1,0,0),(0,0,1)); ?
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Deux questions sur

Messagepar rebouxo » Mercredi 19 Décembre 2007, 20:30

Bonsoir Philippe,
Pour les intersections dans l'espace, je vais reprendre mon source pour mettre la méthode la plus propre possible. Celle de MB fonctionne bien mais si on peut faire plus simple.
Pour la projection je voudrais que mes deux arcs de cercles soit symétriques une fois projetés. Ils sont symétriques et je voudrais conserver cette symétrie dans la figure en perspective. Je ne sais pas si c'est possible, et je ne maîtrise pas suffisamment les perspectives pour me débrouiller tout seul.

Olivier
rebouxo
Modérateur
 
Messages: 6938
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Deux questions sur

Messagepar Ph. Ivaldi » Jeudi 20 Décembre 2007, 01:58

Bonsoir Olivier,
rebouxo a écrit:Pour les intersections dans l'espace,[...] Celle de MB fonctionne bien

Tout à fait ! Je reproche simplement à cette méthode de dépendre d'un paramètre qu'il faut "bien" choisir.
Je suis aussi assez perplexe quant au sens, d'un point de vue informatique, à donner à l'intersection de deux chemins de l'espace...
J'ai le même questionnement dans geometry_dev où il faut parfois décider si la solution d'une équation du 4eme dégré est réelle ou pas.
rebouxo a écrit:Pour la projection je voudrais que mes deux arcs de cercles soit symétriques une fois projetés.

Je procéderais ainsi pour avoir un effet 3D:
Code: Tout sélectionner
size(6cm,0);
import solids;

currentprojection=orthographic((1,0,0),(0,0,1));
currentlight=(1,1,1);
path3 arc=Arc(O,1,90,0,90,180,Y,32);
revolution r=revolution(arc--cycle,Z,30,330);
r.fill(lightgrey);
fill(rotate(-30,Z)*arc--cycle,gray);
fill(rotate(30,Z)*arc--cycle,lightgray);
draw(rotate(30,Z)*arc,grey);
draw(rotate(-30,Z)*arc--cycle,grey);

ou ainsi, sans effet 3D:
Code: Tout sélectionner
size(6cm,0);
import solids;

currentprojection=orthographic((1,0,0),(0,0,1));
currentlight=(1,1,1);
path3 arc=Arc(O,1,90,0,90,180,Y,32)--cycle;
filldraw(rotate(90,Z)*arc,mediumgray);
filldraw(rotate(270,Z)*arc,mediumgray);
fill(rotate(-30,Z)*arc,gray);
fill(rotate(30,Z)*arc,lightgray);
draw(rotate(30,Z)*arc,grey);
draw(rotate(-30,Z)*arc,grey);
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité