Labels mal placé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.

Labels mal placés

Messagepar Arnaud » Dimanche 02 Janvier 2011, 22:24

Pour une raison que je ne comprends pas, les labels A et B sont mal placés dans cette figure ( j'y ai placé ces points avec "dot" pour bien repérer leur position ).
Tous les autres labels sont à leur place.
En mettant (-1,0) à la place de A ( de coordonnées (0,0) ) et en décalant le label de B également de une unité sur la gauche, c'est ok, mais c'est du bidouillage...

Ai-je fait une erreur ?

21c5203f6921dedc481b9a81829917f0.png

Code: Tout sélectionner
unitsize(1cm);
import geometry;
pair A=(0,0), B=(2,0), M=(3,1.5), N=(5,2), P=(3,1), Q=(5,-1), R=(3,-1), S=(5,-1.5), I=(3,0), J=(5,0);
fill((3,-2)--(3,2.5)--(5,2.5)--(5,-2)--cycle,palegreen);
dot(A);dot(B);
line d1 = line(0,1,0);
draw(d1,black);
line d2 = line(1,0,-3);
draw(d2,deepgreen);
line d3 = line(1,0,-5);
draw(d3,deepgreen);
perpendicularmark(d2,d1,deepgreen,quarter=4);
perpendicularmark(d3,d1,deepgreen,quarter=4);
draw(A--B,blue,Arrow);
draw(M--N,red,Arrow);
draw(P--Q,red,Arrow);
draw(R--S,red,Arrow);
label("$B$",B,N);
label("$A$",A,S);
label("$M$",M,W);
label("$P$",P,W);
label("$R$",R,W);
label("$N$",N,E);
label("$Q$",Q,E);
label("$S$",S,E);
label("$I$",I,SW);
label("$J$",J,SE);
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7115
Inscription: Lundi 28 Août 2006, 12:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Labels mal placés

Messagepar OG » Dimanche 02 Janvier 2011, 22:28

Attention, si tu appelles une variable N, S, W, E tu ne peux utiliser N, S, W, E pour les positions relatives
ou alors il faut demander plain.N, plain.S, plain.W, plain.E

9f3f385b6ea94672a99c28dc38c99eb2.png

Code: Tout sélectionner
unitsize(1cm);
import geometry;
pair A=(0,0), B=(2,0), M=(3,1.5), N=(5,2), P=(3,1), Q=(5,-1), R=(3,-1), S=(5,-1.5), I=(3,0), J=(5,0);
fill((3,-2)--(3,2.5)--(5,2.5)--(5,-2)--cycle,palegreen);
dot(A);dot(B);
line d1 = line(0,1,0);
draw(d1,black);
line d2 = line(1,0,-3);
draw(d2,deepgreen);
line d3 = line(1,0,-5);
draw(d3,deepgreen);
perpendicularmark(d2,d1,deepgreen,quarter=4);
perpendicularmark(d3,d1,deepgreen,quarter=4);
draw(A--B,blue,Arrow);
draw(M--N,red,Arrow);
draw(P--Q,red,Arrow);
draw(R--S,red,Arrow);
label("$B$",B,plain.N);
label("$A$",A,plain.S);
label("$M$",M,W);
label("$P$",P,W);
label("$R$",R,W);
label("$N$",N,E);
label("$Q$",Q,E);
label("$S$",S,E);
label("$I$",I,SW);
label("$J$",J,SE);


O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Labels mal placés

Messagepar GMaths » Dimanche 02 Janvier 2011, 22:34

OG a écrit:Attention, si tu appelles une variable N, S, W, E tu ne peux utiliser N, S, W, E

... et c'est pour cela que l'on met souvent pA, pB, ... pour les pairs (ou points) dans nos exemples car on anticipe qu'il faudra peut-être pE et non E.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar Arnaud » Dimanche 02 Janvier 2011, 22:41

Quel idiot...

Merci à vous deux ;)
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7115
Inscription: Lundi 28 Août 2006, 12:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar GMaths » Dimanche 02 Janvier 2011, 23:35

Quand on anticipe qu'il y aura beaucoup de points, on peut penser à ce genre de chose, pour limiter le nombre de lignes "label ...".

Code: Tout sélectionner
//       k      0     1     2       3     4     5      6      7        8     9   
string[] n = {"$A$","$B$","$M$",  "$N$","$P$","$Q$", "$R$", "$S$",   "$I$","$J$"};
pair[]   z = {(0,0),(2,0),(3,1.5),(5,2),(3,1),(5,-1),(3,-1),(5,-1.5),(3,0),(5,0)};
pair[]   d = {  S  ,  N  ,  W    ,  N  ,  W  ,  E   ,  W   ,  E     ,  SW ,  SE };
for(int k=0; k<n.length; ++k) label(n[k],z[k],d[k]);


... mais il n'y a un gain de temps que si on a un raccourci pour coller directement, quelque chose comme cela, où il suffit alors de compléter les trois listes :

Code: Tout sélectionner
//       k      0       
string[] n = {"$A$"};
pair[]   z = {(0,0)};
pair[]   d = {  S  };
for(int k=0; k<n.length; ++k) label(n[k],z[k],d[k]);


avec la réserve, que l'on en re-perd un peu... en devant écrire, ensuite, par exemple z[2] au lieu de pM.
Dernière édition par GMaths le Lundi 03 Janvier 2011, 00:33, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar Arnaud » Lundi 03 Janvier 2011, 00:15

Joli !

Excellente astuce.
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7115
Inscription: Lundi 28 Août 2006, 12:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar GMaths » Lundi 03 Janvier 2011, 00:56

Arnaud a écrit:Joli !

Excellente astuce.


... améliorable ainsi :

9cc781ae1dfa6e425fb17255d4381892.png

Code: Tout sélectionner
unitsize(1cm);
import geometry;

pen p1=black, p2=blue, p3=red;

// k 0 1 2 3 4 5 6 7 8 9
Label[] n = {"$A$","$B$","$M$", "$N$","$P$","$Q$", "$R$", "$S$", "$I$","$J$"}; // nom
pair[] z = {(0,0),(2,0),(3,1.5),(5,2),(3,1),(5,-1),(3,-1),(5,-1.5),(3,0),(5,0)}; // coordonnées
align[] d = { S , N , W , N , W , E , W , E , SW , SE }; // direction label
pen[] s = { p1 , p1 , p2 , p2 , p3 , p3 , p2 , p2 , p2 , p2 }; // stylo
real[] p = { 1 , 1 , 0 , 2 , 0 , 1.5 , 0 , 0 , 0 , 0 }; // ajout point si différent de 0
real[] l = { 1 , 1 , 1 , 1 , 0 , 0 , 1.5 , 0 , 1 , 0 }; // ajout label si différent de 0

fill((3,-2)--(3,2.5)--(5,2.5)--(5,-2)--cycle,palegreen);
line d1 = line(0,1,0), d2 = line(1,0,-3), d3 = line(1,0,-5);
draw(d1,black);
draw(d2,deepgreen);
draw(d3,deepgreen);
perpendicularmark(d2,d1,deepgreen,quarter=4);
perpendicularmark(d3,d1,deepgreen,quarter=4);
draw(z[0]--z[1],blue,Arrow);
draw(z[2]--z[3],red,Arrow);
draw(z[4]--z[5],red,Arrow);
draw(z[6]--z[7],red,Arrow);

for(int k=0; k<n.length; ++k) {
if(p[k]!=0) dot(z[k],scale(p[k])*s[k]);
if(l[k]!=0) label(scale(l[k])*n[k],z[k],d[k],s[k]);
}


... avec prise en compte du stylo, de la possibilité de mettre ou pas le point, de mettre ou pas le label.

Mais je le répète, ce n'est intéressant que si on a un raccourci pour introduire directement quelque chose comme cela :

Code: Tout sélectionner
pen p1=black;
   
//       k      0     1     2       3     4     5      6      7        8     9   
Label[]  n = {"$A$"}; // nom
pair[]   z = {(0,0)}; // coordonnées
align[]  d = {  S  }; // direction label
pen[]    s = {  p1 }; // stylo
real[]   p = {  1  }; // ajout point si différent de 0 - influe sur la taille des points
real[]   l = {  1  }; // ajout label si différent de 0 - influe sur la taille des labels

for(int k=0; k<n.length; ++k) {
    if(p[k]!=0) dot(z[k],scale(p[k])*s[k]);
    if(l[k]!=0) label(scale(l[k])*n[k],z[k],d[k],s[k]);
}   


... qu'il faut ensuite compléter.
Dernière édition par GMaths le Lundi 03 Janvier 2011, 09:54, édité 3 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar GMaths » Lundi 03 Janvier 2011, 07:07

Je suis revenu sur l'exemple précédent pour prendre en compte p et l dans la taille des points et des labels.

On peut encore faire beaucoup mieux... mais c'était juste histoire de donner des idées.

Une autre idée : supprimée, car après réflexion sur sa faisabilité, elle était mauvaise !
Dernière édition par GMaths le Lundi 03 Janvier 2011, 12:32, édité 3 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar GMaths » Lundi 03 Janvier 2011, 09:45

Message aux administrateurs : il y a un bogue dans la visualisation du code d'une figure asy sur le forum.
Ma figure du message précédent fait apparaitre un code dont au moins une partie manque par rapport au code réel qui génère la figure.

Problème avec le symbole < au moins.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar MB » Lundi 03 Janvier 2011, 11:03

GMaths a écrit:Message aux administrateurs : il y a un bogue dans la visualisation du code d'une figure asy sur le forum.


Ok, j'essaye de regarder ça ce soir. :wink:
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: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Labels mal placés

Messagepar MB » Mardi 04 Janvier 2011, 00:24

GMaths a écrit:Problème avec le symbole < au moins.


Ce cas là est réglé mais il faudra que je vois si il peut y en avoir d'autres. Ca venait du html :

Code: Tout sélectionner
<html>
<body>
k<n
</body>
</html>
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: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
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 16 invités