Dans une figure TikZ, je dessine un carré dont les coins sont définis par des nœuds (nodes). À la différence d'un carré dont les coins sont définis par des coordonnées, les coins définis par des nœuds ne présentent pas une belle intersection, un peu comme si le paramètre --cycle manquait. Pourquoi ?

Voici un ECM :

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\definecolor{white smoke}{rgb}{0.96, 0.96, 0.96}
\tikzstyle{corner}= [outer sep = 0 pt, inner sep = 0 pt]
    % White smoke background to match
    % texnique.fr's code background color (#f5f5f5 in HTML)
    \filldraw[white smoke] (0, 0) rectangle (6, 6) ;
        % Outer square
        \draw[red, ultra thick] (1, 1) rectangle (5, 5) ;
        % Node 1
        \node (n1) at (2, 4) [corner] {} ;
        % Node 2
        \node (n2) at (4, 4) [corner] {} ;
        % Node 3
        \node (n3) at (4, 2) [corner] {} ;
        % Node 4
        \node (n4) at (2, 2) [corner] {} ;
        % Inner square
        \draw[ultra thick, green!50!black] (n1) -- (n2) -- (n3) -- (n4) -- (n1) -- cycle ;
\end{tikzpicture}
\end{document}

Comment faire pour que les coins du carré vert aient le même aspect que ceux du carré rouge ? J'ai pourtant bien spécifié que les nœuds avaient un inner sep et un outer sep nuls !

alt text

Nota : cette vue est un détail de la figure obtenue avec le code ci-dessus.

Posée 11 Sep, 02:33

Pathe's gravatar image

Pathe ♦♦
2.3k863
Taux d'acceptation : 59%

Modifiée 11 Sep, 12:11

Il doit bien y avoir en TikZ l'équivalent de linejoin=1, comme chez pstricks ?

(11 Sep, 12:50) Bernard Bernard's gravatar image

Normalement, c'est --cycle ; mais là, il s'agit de relier des nœuds et non des coordonnées : je constate à mes dépens que TikZ se comporte différemment dans ce cas-là.

(11 Sep, 13:24) Pathe ♦♦ Pathe's gravatar image

Un nœud, même vide, a une certaine taille à moins de lui spécifier le contraire (il me semble que cela est possible).

Le plus simple est de spécifier que le cycle doit se faire à partir du centre du nœud : :(n1.center) par exemple.

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}

\definecolor{white smoke}{rgb}{0.96, 0.96, 0.96}
\tikzstyle{corner}= [outer sep = 0 pt, inner sep = 0 pt]
    % White smoke background to match
    % texnique.fr's code background color (#f5f5f5 in HTML)
    \filldraw[white smoke] (0, 0) rectangle (6, 6) ;
        % Outer square
        \draw[red, ultra thick] (1, 1) rectangle (5, 5) ;
        % Node 1
        \node (n1) at (2, 4) [corner] {} ;
        % Node 2
        \node (n2) at (4, 4) [corner] {} ;
        % Node 3
        \node (n3) at (4, 2) [corner] {} ;
        % Node 4
        \node (n4) at (2, 2) [corner] {} ;
        % Inner square
        \draw[ultra thick, green!50!black] (n1.center) -- (n2.center) -- (n3.center) -- (n4.center) -- (n1.center) -- cycle ;
\end{tikzpicture}
\end{document}

alt text

Lien permanent

Publiée 11 Sep, 13:53

Nikopol's gravatar image

Nikopol
6519
Taux d'acceptation : 38%

Modifiée 11 Sep, 18:12

C'est mieux, mais comme les coins sont jointifs au centre du nœud, et que les traits sont épais, l'extérieur des angles du carré vert est toujours en escalier : on n'obtient toujours pas l'effet obtenu par --cycle, à savoir deux traits parfaitement jointifs.

(11 Sep, 15:03) Pathe ♦♦ Pathe's gravatar image

Je ne comprends pas, avec ce code les traits sont parfaitement jointifs, je n'ai aucun effet "escalier" (même avec zoom x6000), j'édite mon message pour rajouter une image de ce que j'obtiens. Idem en faisant un triangle, je ne vois rien qui cloche.

(11 Sep, 18:09) Nikopol Nikopol's gravatar image

En effet : dans mon code j'avais omis un center ! J'avais

\draw[ultra thick, green!50!black] (n1.center) -- (n2.center) -- (n3.center) -- (n4) -- (n1.center) -- cycle ;

au lieu de

\draw[ultra thick, green!50!black] (n1.center) -- (n2.center) -- (n3.center) -- (n4.center) -- (n1.center) -- cycle ; !

La différence est édifiante.

(12 Sep, 03:01) Pathe ♦♦ Pathe's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×26
×1
×1
×1

Question posée : 11 Sep, 02:33

Question vue : 94 fois

Dernière mise à jour : 12 Sep, 03:02