IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation (La)TeX avancée Discussion :

Un rapporteur Tikz qui ne s'agrandit pas bien ?!


Sujet :

Programmation (La)TeX avancée

  1. #1
    Invité
    Invité(e)
    Par défaut Un rapporteur Tikz qui ne s'agrandit pas bien ?!
    Bonjour,
    J'ai écrit un rapporteur avec Tikz, mais lorsque je veux l'agrandir avec [scale=2] par exemple, alors les traits de graduations se placent sur les nombres alors qu'à l'échelle originale, ce n'est pas le cas.
    Pourtant, j'ai pris soin d'indiquer toutes les dimensions avec des proportions.
    Quelle est mon erreur ?
    Merci de vos lumières.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    \begin{tikzpicture}%[scale=2]
    \draw [node font=\tiny](-3,0) arc(180:0:3)
    node foreach \p:\ptext in {0/0,0.0556/10,0.1111/20,0.1667/30,0.2222/40,0.2778/50,0.3333/60,
    0.3889/70,0.4444/80,0.5/90,0.5556/100,0.6111/110,0.6667/120,
    0.7222/130,0.7778/140,0.8333/150,0.8889/160,0.9444/170,1/180} [below=0.2,sloped,pos=\p]{\ptext};
     
    \draw [node font=\tiny](-2.5,0) arc(180:0:2.5)
    node foreach \p:\ptext in {0/180,0.0556/170,0.1111/160,0.1667/150,0.2222/140,0.2778/130,
    0.3333/120,0.3889/110,0.4444/100,0.5/90,0.5556/80,0.6111/70,
    0.6667/60,0.7222/50,0.7778/40,0.8333/30,0.8889/20,0.9444/10,1/0} [below=0.1,sloped,pos=\p]{\ptext};
     
    \foreach \a in {0,1,...,180}
    	{\draw (\a:3)--(\a:2.85);}
    \foreach \a in {0,5,...,180}
    	{\draw (\a:3)--(\a:2.8);}
    \foreach \a in {0,10,...,180}
    	{\draw (\a:3)--(\a:2.75) ;}	
    \foreach \a in {0,10,...,180}
    	{\draw (\a:2.5)--(\a:2.4);}
     
    \draw (-3,0) arc(180:0:3)--(3,-0.5)--(-3,-0.5)--cycle;	
    \draw (-2,0)--(2,0);
    \draw (0,-0.2)--(0,2);			
    \end{tikzpicture}

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 344
    Points : 561
    Points
    561
    Par défaut
    Bonjour,

    J'ai repris votre code et en utilisant le placement polaire, ça semble fonctionner. Je me suis également permis de commenter et de simplifier votre code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    \begin{tikzpicture}[scale=2]		
        % graduations externes 1 degrés
        \foreach \a in {0,1,...,180}{\draw (\a:3)--(\a:2.85);}
        % graduations externes 5 degrés
        \foreach \a in {0,5,...,180}{\draw (\a:2.85)--(\a:2.8);}
        % graduations externes 10 degrés
        \foreach \a in {0,10,...,180}{\draw (\a:2.80)--(\a:2.75) ;}
        % graduations internes 10 degrés
        \foreach \a in {0,10,...,180}{\draw (\a:2.5)--(\a:2.4);}
     
        % affichage des graduations
    	\foreach \a/\b in {%
            0/270,10/280,20/290,30/300,40/310,50/320,%
            60/330,70/340,80/350,90/360,100/10,110/20,%
            120/30,130/40,140/50,150/60,160/70,170/80,180/90%
        }{%
        	\node[font=\tiny, rotate=\b] (\a) at (\a:2.65){\a};%
        	\node[font=\tiny, rotate=-\b] (\a) at (180-\a:2.3){\a};%
    	}
     
        % les contours du rapporteur
        \draw(-2.5,0) arc(180:0:2.5);
        \draw (-3,0) arc(180:0:3)--(3,-0.5)--(-3,-0.5)--cycle;	
        \draw (-2,0)--(2,0);
        \draw (0,-0.2)--(0,2);			
    \end{tikzpicture}
    Voici le résultat à l'échelle 2 :

    Nom : Capture d’écran 2015-04-18 à 16.12.56.png
Affichages : 3414
Taille : 65,7 Ko
    La FAQ apporte souvent la solution aux problèmes
    Avant de demander de l'aide, pensez à faire un ECM ! Un problème bien expliqué est un problème à moitié résolu .

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    C'est un très net progrès. Franchement bravo !

    Le problème était si j'ai bien compris créé par le placement des « nodes » avec du texte le long de la courbe en utilisant « slopped ».
    En faisant une rotation du texte (des nodes), le problème ne se pose plus en agrandissant.

    Mais un autre problème se pose (qui se posait aussi avec mon code) : lorsque l'on réduit le rapporteur [scale=0.5], le texte des « nodes » ne se réduit pas et du coup, le texte de chaque « node » empiète sur son voisin.

    Existe-t-il une solution qui permet de réduire et d'agrandir le texte des « nodes » en même temps que la figure lors d'un « scale » ?
    Dernière modification par Invité ; 18/04/2015 à 21h18.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 344
    Points : 561
    Points
    561
    Par défaut
    Citation Envoyé par AndréC Voir le message
    Bonsoir,
    C'est un très net progrès. Franchement bravo !

    Le problème était si j'ai bien compris créé par le placement des « nodes » avec du texte le long de la courbe en utilisant « slopped ».
    En faisant une rotation du texte (des nodes), le problème ne se pose plus en agrandissant.

    Mais un autre problème se pose (qui se posait aussi avec mon code) : lorsque l'on réduit le rapporteur [scale=0.5], le texte des « nodes » ne se réduit pas et du coup, le texte de chaque « node » empiète sur son voisin.

    Existe-t-il une solution qui permet de réduire et d'agrandir le texte des « nodes » en même temps que la figure lors d'un « scale » ?
    Avec plaisir

    Alors oui c'est possible, c'est une option que je viens de découvrir en même temps que vous. Il existe une option scale pour les nodes. Les lignes 17 et 18 deviennent donc (avec le facteur réglables évidement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    \node[font=\tiny, rotate=\b, scale=0.5] (\a) at (\a:2.65){\a};%
    \node[font=\tiny, rotate=-\b, scale=0.5] (\a) at (180-\a:2.3){\a};%
    Pour en savoir plus sur Tikz, je vous conseille le livre Tikz pour l'impatient.
    La FAQ apporte souvent la solution aux problèmes
    Avant de demander de l'aide, pensez à faire un ECM ! Un problème bien expliqué est un problème à moitié résolu .

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Benoists Voir le message
    Alors oui c'est possible, c'est une option que je viens de découvrir en même temps que vous. Il existe une option scale pour les nodes. Les lignes 17 et 18 deviennent donc (avec le facteur réglables évidement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    \node[font=\tiny, rotate=\b, scale=0.5] (\a) at (\a:2.65){\a};%
    \node[font=\tiny, rotate=-\b, scale=0.5] (\a) at (180-\a:2.3){\a};%
    J'ai trouvé une autre solution qui fonctionne aussi bien avec mon code (donc avec sloped) qu'avec le votre (donc avec une transformation canvas).

    Il suffit de placer l'image Tikz dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    \scalebox{1.5}{
    %image Tikz
    }
    Il est expliqué dans cette discussion qu'un \begin{tikzpicture}[scale=....] dans une figure Tikz ne modifie pas la taille du texte, donc pose toujours problème. Avec \scalebox, tout est mis à l'échelle : l'image et le texte !

    Citation Envoyé par Benoists Voir le message
    Pour en savoir plus sur Tikz, je vous conseille le livre Tikz pour l'impatient.
    En fait, je potasse la doc originale http://mirrors.ctan.org/graphics/pgf.../pgfmanual.pdf pgf-tikz.pdf, elle est plus complète, mais parfois peu claire.

    Tikz pour l'impatient est-elle plus claire ?

    Je marque la discussion comme résolue.

    Merci beaucoup.
    Dernière modification par Invité ; 19/04/2015 à 19h15.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'ai à mon tour simplifié votre code en "factorisant" les trois "foreach" et en plaçant le rapporteur dans un "\scalebox":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    \scalebox{1.5}{
    \begin{tikzpicture}	
        % graduation externe 1 degrés
        \foreach \a in {0,1,...,180}{\draw (\a:3)--(\a:2.85);}
        % graduation externe 5 degrés
        \foreach \a in {0,5,...,180}{\draw (\a:2.85)--(\a:2.8);}
     
        % double graduation
       \foreach \a/\b in {%
            0/-90,10/-80,20/-70,30/-60,40/-50,50/-40,%
            60/-30,70/-20,80/-10,90/0,100/10,110/20,%
            120/30,130/40,140/50,150/60,160/70,170/80,180/90%
        }{
        % graduation externe 10 degrés
        \draw (\a:2.80)--(\a:2.75) 
        node[font=\tiny, rotate=\b] (\a) at (\a:2.65){\a};
     
        % graduation interne 10 degrés
        \draw (\a:2.5)--(\a:2.45)
    	node[thin,font=\tiny, rotate=-\b] (\a) at (180-\a:2.3){\a}; }
     
        % demi-cercle intérieur
        \draw(-2.5,0) arc(180:0:2.5);
        % contours du rapporteur
        \draw (-3,0) arc(180:0:3)--(3,-0.5)--(-3,-0.5)--cycle;	
        \draw (-2,0)--(2,0);
        \draw (0,-0.2)--(0,2);			
    \end{tikzpicture}
    }

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 344
    Points : 561
    Points
    561
    Par défaut
    Le problème était si j'ai bien compris créé par le placement des « nodes » avec du texte le long de la courbe en utilisant « slopped ».
    En faisant une rotation du texte (des nodes), le problème ne se pose plus en agrandissant.
    Je pense que le problème venait de vos mesures, en utilisant les coordonnées cartésiennes, vous avez arrondi. En taille réelle, cela ne se voit pas, mais lorsqu'on agrandi, les erreurs deviennent significatives (conclusion personnelle).

    L'avantage du livre par rapport à la documentation est qu'il est plus tourné vers l'utilisation de Tikz. La documentation, en plus d'être volumineuse, est un recueil des fonctions disponibles, sans expliquer comment les utiliser. Après, mon avis n'est pas forcément objectif, j'ai appris Tikz avec le livre et je pleure à chaque fois qu'il faut chercher un truc dans le doc (quelle qu'elle soit).

    Heureux que votre problème soit résolu. Bonne continuation
    La FAQ apporte souvent la solution aux problèmes
    Avant de demander de l'aide, pensez à faire un ECM ! Un problème bien expliqué est un problème à moitié résolu .

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Benoists Voir le message
    Je pense que le problème venait de vos mesures, en utilisant les coordonnées cartésiennes, vous avez arrondi. En taille réelle, cela ne se voit pas, mais lorsqu'on agrandi, les erreurs deviennent significatives (conclusion personnelle).
    Je n'ai pas utilisé les coordonnées cartésiennes. J'ai arrondi les fractions 10/180; 20/180; ... au dix-millième, elles indiquent où doivent se placer les noeuds (« node ») le long de l'arc de cercle (de longueur 1) qui a été tracé.

    L'erreur vient du fait que « \begin{tikzpicture}[scale=2] » agrandit uniquement (ou réduit) le tracé de la figure et non pas le texte des « nodes » qui eux, restent à l'échelle 1.

    La différence de procédure entre nos deux codes faisait apparaître le problème avec « sloped », car cette option permet de décorer le demi-cercle après qu'il ait été tracé alors que « rotate » ici décore le trait de graduation lui-même (et non pas le demi-cercle). Le trait de graduation est agrandit par le « scale » et donc déplace d'autant le « node » qui lui est attaché.
    • Avec « sloped » les traits de graduation sont agrandi par « scale » alors que la distance des « nodes » à la courbe reste inchangée. Ainsi, les traits de graduation et les « nodes » se superposent.
    • Avec « rotate » tel que vous l'avez codé, chaque « node » décore la graduation tracée. Lors de l'agrandissement, le trait de graduation est agrandi et donc le « node » est déplacé. Le texte du « node » reste à la même taille. Lors d'un agrandissement du rapporteur, un texte non agrandi évite à fortiori à ce dernier de se superposer sur les graduations. Mais lors d'une réduction, il est alors trop grand et se superpose sur la graduation. D'où l'erreur avec nos deux codes.

    En plaçant l'image Tikz dans un \scalebox, le tracé de la figure ainsi que le texte des nodes est agrandi (ou réduit) simultanément, d'où dans ce cas, l'absence d'erreurs.

    Citation Envoyé par Benoists Voir le message
    L'avantage du livre par rapport à la documentation est qu'il est plus tourné vers l'utilisation de Tikz. La documentation, en plus d'être volumineuse, est un recueil des fonctions disponibles, sans expliquer comment les utiliser. Après, mon avis n'est pas forcément objectif, j'ai appris Tikz avec le livre et je pleure à chaque fois qu'il faut chercher un truc dans le doc (quelle qu'elle soit).

    Heureux que votre problème soit résolu. Bonne continuation
    Alors, je vais potasser "l'impatient" en priorité.

    Merci et bonne journée.
    Dernière modification par Invité ; 20/04/2015 à 08h25.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pages qui ne s'affichent pas bien sous I.E.
    Par Hilary dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/07/2010, 03h50
  2. Réponses: 6
    Dernier message: 04/09/2006, 15h48
  3. [W3C] boite qui s'agrandit pas ?
    Par artotal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/01/2006, 13h17
  4. JDialog qui ne s'affiche pas bien
    Par angiosfr dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 20/12/2005, 12h05
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo