Label et boucle

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
Coyote
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 117
Inscription : dimanche 06 mai 2007, 09:23
Localisation : Chambéry

Label et boucle

Message non lu par Coyote »

Bonjour à tous,

toujours du asymptote, un rendu toujours aussi fantastique ... mais voilà je suis sur un os :
En fait je souhaite faire une boucle (avantage indéniable de Asymptote) et chaque fois qu'il me trace un segment, j'aimerai un label en rapport avec l'itération de ma boucle !
Un ECM (pas minimal d'accord :oops: ) mais si j'écris ça :

Code : Tout sélectionner

\documentclass[a4paper,10pt]{article}
\usepackage{asymptote}
\usepackage{verbatim}

\begin{asy}

unitsize(x=1cm,y=1cm) ;
import graph ;

real xmin = -2 ; real xmax = 6 ; real ymin = -1 ; real ymax = 5 ;

// Création des axes :
xaxis(-2, 6, Arrow) ;
yaxis(-1, 5, Arrow) ;
label("O", (-.125,-.125), SW, currentpen+fontsize(10)) ;
label("$\vec{i}$", (.5,0), S, currentpen+fontsize(10)) ;
label("$\vec{j}$", (0,0.5), W, currentpen+fontsize(10)) ;

for (int n = 0 ; n < 5; ++ n) {
	draw((n,0) -- (n, n)) ;
	label("n" , (n, n), N) ; 
}

\end{asy}
Il m'affiche en haut de chaque bâton, n, et non pas le nombre ! Ce que j'ai pu lire et compris c'est qu'il prend ceci comme la liste "n" et non comme le nombre n.
J'ai essayé de créer une liste et de la remplir à chaque itération mais pas de succès non plus ! Si quelqu'un a une idée ?

Merci d'avance.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Label et boucle !

Message non lu par MB »

Coyote a écrit :Il m'affiche en haut de chaque bâton, n, et non pas le nombre !
Oui, c'est normal.
Tu peux essayer d'utiliser la fonction format pour transformer un entier en chaine de caractères.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Asymptote] Label et boucle !

Message non lu par OG »

Bonsoir

Une solution consiste à écrire

Code : Tout sélectionner

 string a=string(n);
 label(a , (n, n), N) ;
On peut faire des choses plus complexes, un jour je ne sais pas ce qui m'a pris pour une légende :

Code : Tout sélectionner

  legdicho="$\left\{\begin{aligned} \null & a_{"+string(i)+"}="+string(masuite[i][0])+"\\ & b
_{"+string(i)+"}="+string(masuite[i][1])+"\end{aligned}\right.$";
Cordialement
O.G.
Coyote
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 117
Inscription : dimanche 06 mai 2007, 09:23
Localisation : Chambéry

Re: [Asymptote] Label et boucle !

Message non lu par Coyote »

Merci à tous les deux pour les réponses ... !

J'ai essayé format, sans succès, je vais m'y plonger un peu plus dedans .. !

Nickel pour la solution de OG. Je vais maintenant essayer de comprendre le pourquoi du comment ... !

Merci en tout cas !

Cordialement.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Asymptote] Label et boucle !

Message non lu par OG »

Pour tout avouer, j'ai appris cela sur le site de, devinez qui, Philippe Ivaldi, évidemment.
D'après le manuel
string string(real x, int digits=realDigits)
casts x using precision digits to a string, using the C locale;
Après on peut jouer avec la concaténation, etc.

O.G.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Label et boucle !

Message non lu par MB »

Bizarre que ça ne marche pas format.
D'après le manuel :
string format(string s, int n)
returns a string containing n formatted according to the C-style format string s using the current locale;
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Asymptote] Label et boucle !

Message non lu par OG »

Chez moi la solution de MB fonctionne.

Code : Tout sélectionner

string a=format(n);
label(a , (n, n), N) ;
O.G.
Coyote
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 117
Inscription : dimanche 06 mai 2007, 09:23
Localisation : Chambéry

Re: [Asymptote] Label et boucle !

Message non lu par Coyote »

Bonsoir,

Ok pour le format, je ne l'avais pas vu comme ça ... effectivement, c'est mieux en passant par une variable ... :oops: .

Pour la soluce d'OG, dans le second exemple, dans le :

Code : Tout sélectionner

a_{"+string(i)+"}
je capte bien le + avant le string(i), on rajoute le "i", mais pas le + après ????

Pourquoi doit-on mettre ce + après ? Que rajoute-t-on ?

Argh .... ! Je sens que je ne suis pas au bout de mes peines ... :? .
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Asymptote] Label et boucle !

Message non lu par OG »

Bonsoir

La concaténation (dur à dire dur à écrire) se fait par +.
Si tu veux créer des étiquettes du styles $u_{10}$ à partir d'une boucle il suffit d'écrire

Code : Tout sélectionner

string a="$u_{"+string(i)+"}$";
(le code était sur 2 lignes)

Cordialement
O.G.
Coyote
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 117
Inscription : dimanche 06 mai 2007, 09:23
Localisation : Chambéry

Re: [Asymptote] Label et boucle !

Message non lu par Coyote »

Oui c'est ce que j'ai vu ... et justement c'est le dernier + que je ne comprends pas.

Code : Tout sélectionner

 string a="$u_{"+string(i)+"}$";
Ce que je comprends du code, on créé une chaine a, on met dedans u_, puis on ajoute (1er plus) l'indice et après ????????????

Pourquoi ce deuxièrme plus ? Qu'ajoute-ton ??

Il faut dire que je ne maitrise absolument ni C, ni C++ ?? D'ailleurs, faut-il que je m'y plonge en parallèle ?

Merci
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Asymptote] Label et boucle !

Message non lu par OG »

Bonjour

Je n'ai pas été assez clair.
Si tu veux créer la chaîne de caractère $u_i$ (avec bien sûr i un vrai entier issu de string(i)) le code "\$u_{"+string(i)+"}\$" donnera la bonne chaîne (ne pas oublier { car sinon u_10 ne donnera pas ce qu'il faut) : on assemble $u_{ i }$ (morceau 1 morceau 2 morceau 3).

Il faut bien voir que "string(i)" donnera la chaîne string(i) et pas i, d'où les 3 morceaux.
Mis à part cela je ne comprends pas trop.

Inutile de faire du C (ou du C++) pour continuer à faire du Asymptote, si tu as déjà fait un peu de Pascal ou un autre langage cela suffira pour les besoins courants et il y a toujours le forum. Ce qui compte plus c'est de "voir" les algorithmes.

Il y a un document qui a l'air très bien où on apprend la programmation (début) avec Asymptote. Malheureusement c'est en hollandais.

http://users.fulladsl.be/spb10695/asymptote.html

ça ne doit pas être très compliqué à traduire, mais il faut du temps.

O.G.
Coyote
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 117
Inscription : dimanche 06 mai 2007, 09:23
Localisation : Chambéry

Re: [Asymptote] Label et boucle !

Message non lu par Coyote »

Merci pour les réponses ... ! Effectivement sans les plus on n'obtient pas ce que l'on veut ... !


Reste plus qu'à faire des diapos avec les boucles mais ça c'est une autre histoire ... :D .
Ph. Ivaldi

Re: [Asymptote] Label et boucle !

Message non lu par Ph. Ivaldi »

Coyote a écrit :Reste plus qu'à faire des diapos avec les boucles mais ça c'est une autre histoire ... :D .
Si ça peut aider, la compilation avec pdflatex du code suivant donne le pdf joint.

Code : Tout sélectionner

\documentclass[pdftex]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[inline]{asymptote}

\begin{document}
Du texte, du texte, du texte, du texte, du texte,
du texte, du texte, du texte, du texte, du texte,
du texte, du texte, du texte, du texte, du texte,
du texte, du texte, du texte.
\begin{center}
\begin{asy}
import animate;
animation A;

size(5cm);
for (int i=0; i < 10; ++i) {
  save();
  label(scale(5)*string(i),white);
  fill(unitcircle);
  A.add();
  restore();
}

label(A.pdf("controls",keep=true));
\end{asy}
\end{center}
Du texte, du texte, du texte, du texte, du texte,
du texte, du texte, du texte, du texte, du texte,
du texte, du texte, du texte, du texte, du texte,
du texte, du texte, du texte.
\end{document}
inlinemovie.pdf
(63.25 Kio) Téléchargé 286 fois
Coyote
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 117
Inscription : dimanche 06 mai 2007, 09:23
Localisation : Chambéry

Re: [Asymptote] Label et boucle !

Message non lu par Coyote »

Merci pour l'info !

En effet, j'avais déjà entendu parler de ce paquet animate, compatible seulement acrobat d'ailleurs.

Le soucis c'est qu l'on reste sur fichier << texte >> et non une présentation projetable type beamer !!!

J'avoue avoir eu l'idée utopique de mélanger du code beamer (latex) avec du code asymptote mais forcément ça plante. Par contre l'idée du paquet animate est à tester dans beamer ..... Ca peut être une solution très honorable.

Merci pour le tuyau :D .

Sinon j'ai entendu parler de animate ... je vais profiter de mon dernier mois de juin pseudo-libre pour tester tout ça !
Ph. Ivaldi

Re: [Asymptote] Label et boucle !

Message non lu par Ph. Ivaldi »

Coyote a écrit :J'avoue avoir eu l'idée utopique de mélanger du code beamer (latex) avec du code asymptote mais forcément ça plante.
Non, il n'y pas de problème avec beamer à condition de passer l'option fragile aux frames:

Code : Tout sélectionner

\documentclass[pdftex]{beamer}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[inline]{asymptote}

\begin{document}
\begin{frame}[fragile]
  Du texte, du texte, du texte.
  \begin{center}
\begin{asy}
import animate;
animation A;

size(5cm);
for (int i=0; i < 10; ++i) {
  save();
  label(scale(5)*string(i),white);
  fill(unitcircle);
  A.add();
  restore();
}

label(A.pdf("controls",keep=true));
\end{asy}
  \end{center}
  Du texte, du texte, du texte.
\end{frame}
\begin{frame}[fragile]
  Du texte, du texte, du texte.
  \begin{center}
\begin{asy}
import animate;
animation A;

size(5cm);
for (int i=0; i < 10; ++i) {
  save();
  label(scale(5)*string(9-i),white);
  fill(shift(-0.5,-0.5)*unitsquare,blue);
  A.add();
  restore();
}

label(A.pdf("controls",keep=true));
\end{asy}
  \end{center}
  Du texte, du texte, du texte.
\end{frame}
\end{document}
inlinemovie.pdf
(90.78 Kio) Téléchargé 290 fois
Coyote
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 117
Inscription : dimanche 06 mai 2007, 09:23
Localisation : Chambéry

Re: [Asymptote] Label et boucle !

Message non lu par Coyote »

Argh, désolé je me suis mal exprimé !! En fait c'est mettre du code beamer (genre la commande \pause) dans l'environnement asy !

C'est là que ça coince !

Merci en tout cas pour l'aide ...

En relisant mon dernier post, c'était slide que je voulais aussi tester !!!
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message