À l'aide de TikZ, je dessine un schéma en surimpression sur une photo, laquelle se trouve être parfaitement symétrique.

J'ai eu à dessiner une ligne rouge :

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a4paper, english, BCOR = 0pt, DIV = 22]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usepackage{tikz}
\usepackage{float}
\usepackage{babel}
\begin{document}
\begin{figure}[H]
    \centering
        \begin{tikzpicture}[scale = 1.2]
          \tikzstyle{N}= [circle, minimum size = 2 pt, inner sep = 2 pt, draw = black, fill = yellow]
          \draw [line width = 3 pt, color = red, rounded corners] (89.8:5.7) -- (89.8:5.5)
          arc [start angle = 89.8, end angle = 83, radius = 5.5] -- (83:5.7)
          arc [start angle = 83, end angle = 75, radius = 5.7] -- (70:7)
          arc [start angle = 70, end angle = 66.7, radius = 7] 
          -- (65.5:7.3) ;
  \end{tikzpicture}    
\caption{Une ligne rouge}
\end{figure}
\end{document}

... et j'ai eu besoin de la même en vert : comme la photo est symétrique, j'ai cherché à obtenir avec TikZ une ligne symétrique de celle que je venais de tracer. Mais je n'ai pas trouvé d'exemple dans la doc, et j'étais hors-ligne, bref, j'ai redessiné à la main la ligne désirée :

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a4paper, english, BCOR = 0pt, DIV = 22]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usepackage{tikz}
\usepackage{float}
\usepackage{babel}
\begin{document}
\begin{figure}[H]
    \centering
        \begin{tikzpicture}[scale = 1.2]
          \tikzstyle{N}= [circle, minimum size = 2 pt, inner sep = 2 pt, draw = black, fill = yellow]
          \draw [line width = 3 pt, color = red, rounded corners] (89.8:5.7) -- (89.8:5.5)
          arc [start angle = 89.8, end angle = 83, radius = 5.5] -- (83:5.7)
          arc [start angle = 83, end angle = 75, radius = 5.7] -- (70:7)
          arc [start angle = 70, end angle = 66.7, radius = 7] 
          -- (65.5:7.3) ;
          \draw [line width = 3 pt, color = green, rounded corners] (90.2:5.7) -- (90.2:5.5)
          arc [start angle = 90.2, end angle = 97, radius = 5.5] -- (97:5.7)
          arc [start angle = 97, end angle = 105, radius = 5.7] -- (110:7)
          arc [start angle = 110, end angle = 115, radius = 7] 
          -- (114.3:7.3) ;
  \end{tikzpicture}    
\caption{Deux lignes symétriques --- ou presque ! C'est là qu'est l'os !}
\end{figure}
\end{document}

Existe-t-il une fonction permettant d'effectuer avec TikZ cette manip' toute simple ? J'imagine que oui, mais quelle est-elle donc ?

Posée 20 Sep '18, 17:47

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Modifiée 20 Sep '18, 17:50

Il y aura plusieurs façons, une idée est de réinsérer le code (de cette ligne rouge) dans un environnement scope avec l'option xscale=-1 et en changeant la couleur : \begin{scope}[xscale=-1] meme code avec green au lieu de red \end{scope}

(20 Sep '18, 18:20) touhami touhami's gravatar image

Je n'avais pas pensé à cela ! Mais un environnement scope peut-il contenir un autre environnement scope ? Car c'est à l'aide d'un tel environnement que j'intègre mon graphique sur ma photo !

(20 Sep '18, 18:32) Pathe ♦♦ Pathe's gravatar image

Oui c'est possible.

Il est possible aussi de passer l'option xscale=-1 à la commande \draw

(20 Sep '18, 20:16) touhami touhami's gravatar image

Il suffit de réinsérer le même code dans un environnement scope avec l'option xscale=-1

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a4paper, english, BCOR = 0pt, DIV = 22]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usepackage{tikz}
\usepackage{float}
\usepackage{babel}
\begin{document}
\begin{figure}[H]
    \centering
        \begin{tikzpicture}[scale = 1.2]
          \tikzstyle{N}= [circle, minimum size = 2 pt, inner sep = 2 pt, draw = black, fill = yellow]
          \draw [line width = 3 pt, color = red, rounded corners] (89.8:5.7) -- (89.8:5.5)
          arc [start angle = 89.8, end angle = 83, radius = 5.5] -- (83:5.7)
          arc [start angle = 83, end angle = 75, radius = 5.7] -- (70:7)
          arc [start angle = 70, end angle = 66.7, radius = 7] 
          -- (65.5:7.3) ;
          \begin{scope}[xscale=-1]
          \draw [line width = 3 pt, color = green, rounded corners] (89.8:5.7) -- (89.8:5.5)
          arc [start angle = 89.8, end angle = 83, radius = 5.5] -- (83:5.7)
          arc [start angle = 83, end angle = 75, radius = 5.7] -- (70:7)
          arc [start angle = 70, end angle = 66.7, radius = 7] 
          -- (65.5:7.3) ;
          \end{scope}
  \end{tikzpicture}    
\caption{Une ligne rouge et la même en vert (mais à l'envers)}
\end{figure}
\end{document}

Il est possible aussi de passer l'option xscale=-1 à la commande \draw

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt, a4paper, english, BCOR = 0pt, DIV = 22]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usepackage{tikz}
\usepackage{float}
\usepackage{babel}
\begin{document}
\begin{figure}[H]
    \centering
        \begin{tikzpicture}[scale = 1.2]
          \tikzstyle{N}= [circle, minimum size = 2 pt, inner sep = 2 pt, draw = black, fill = yellow]
          \draw [line width = 3 pt, color = red, rounded corners] (89.8:5.7) -- (89.8:5.5)
          arc [start angle = 89.8, end angle = 83, radius = 5.5] -- (83:5.7)
          arc [start angle = 83, end angle = 75, radius = 5.7] -- (70:7)
          arc [start angle = 70, end angle = 66.7, radius = 7] 
          -- (65.5:7.3) ;
          \draw [line width = 3 pt, color = green, rounded corners,xscale=-1] (89.8:5.7) -- (89.8:5.5)
          arc [start angle = 89.8, end angle = 83, radius = 5.5] -- (83:5.7)
          arc [start angle = 83, end angle = 75, radius = 5.7] -- (70:7)
          arc [start angle = 70, end angle = 66.7, radius = 7] 
          -- (65.5:7.3) ;
  \end{tikzpicture}    
\caption{Une ligne rouge et sa symétrique en vert}
\end{figure}
\end{document}
Lien permanent

Publiée 20 Sep '18, 20:16

touhami's gravatar image

touhami
9.6k410
Taux d'acceptation : 51%

Modifiée 21 Sep '18, 01:40

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

\foreach permet de ne pas répéter le \draw et de faciliter les modifications éventuelles :

Ouvrir dans l'éditeur Overleaf
\documentclass{minimal}
\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}[scale=1.2]
    \foreach \s/\c in {1/red, -1/green}
      \draw [line width=3pt, color=\c, rounded corners, xscale=\s] 
            (89.8:5.7) -- (89.8:5.5)
            arc [start angle = 89.8, end angle = 83, radius = 5.5] -- (83:5.7)
            arc [start angle = 83, end angle = 75, radius = 5.7] -- (70:7)
            arc [start angle = 70, end angle = 66.7, radius = 7] 
            -- (65.5:7.3) ;
  \end{tikzpicture}
\end{document}

(Plutôt un commentaire qu'une réponse je suppose, mais je ne vois pas comment faire un commentaire... Pas assez de points ?)

Lien permanent

Publiée 14 Nov '18, 16:20

NeferTiyi's gravatar image

NeferTiyi
2412
Taux d'acceptation : 0%

Modifiée 14 Nov '18, 21:26

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

C'est une élégante solution !

(14 Nov '18, 21:25) 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.