5
1

Dans le cadre de mon travail, j'ai régulièrement à dessiner des terrains de sport à partir de leurs dimensions officielles. Mon fil sur le déplacement de figures m'amène à formaliser cette question.

À titre d'exemple, voici un court de tennis, tel que publié sur Wikimedia Commons :

alt text

Et voici un ECM :

Ouvrir dans l'éditeur Overleaf
\documentclass[10pt, BCOR=0pt, DIV=22, a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\begin{document}
\thispagestyle{empty}
\begin{center}
\begin{tikzpicture}[x = 1 mm, y = 1 mm]
\draw[thick, gray] (0, 0) rectangle (109.7, 237.8) ;
\draw[thick, gray] (0, 0) rectangle (13.7, 237.8) ;
\draw[thick, gray] (96, 0) rectangle (109.7, 237.8) ;
\draw[thick, gray] (0, 0) rectangle (109.7, 118.9) ;
\draw[thick, gray] (13.7, 0) rectangle (96, 54.9) ;
\draw[thick, gray] (13.7, 118.9) rectangle (96, 182.9) ;
\draw[thick, gray] (54.85, 54.9) rectangle (96, 182.9) ;
\draw[thick, gray] (54.85, 0) -- (54.85, 0.88) ;
\draw[thick, gray] (54.85, 237.8) -- (54.85, 236.92) ;
\end{tikzpicture}
\end{center}
\end{document}

Il va de soi qu'un tel mode de représentation n'est pas efficace : ce ne sont là que des coordonnées, aucun coin n'a de nom, etc.

Comment dessiner ce court plus efficacement avec TikZ : définir un node pour chaque coin ? Définir ces nodes par rapport à un node référence ?

Je ne cherche pas une solution, mais plutôt une méthode de travail.


PS : il ne s'agit pas de reproduire les légendes. Seul un dessin à l'échelle m'intéresse.

Posée 05 Nov '17, 16:10

Pathe's gravatar image

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

Modifiée 02 Aoû '19, 05:11


Voici une façon de faire sans node, il suffira d'adapter les dimensions exactes aux rectangles (j'ai eu la flemme de convertir les feet :) )

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz,border=2mm]{standalone}

\usetikzlibrary{backgrounds}

\newcommand{\halffoot}{
\draw (0,0) rectangle (10,12);
\draw (0,3) rectangle ++(3.5,6);
\draw (0,4) rectangle ++(1,4);
\draw (0,5) rectangle ++(-0.2,2);
\draw (0.3,0) arc (0:90:.3);
\draw (0.3,12) arc (0:-90:.3);
\draw[fill= white] (2.5,6) circle (2pt);
\draw (10,7.6) arc (90:270:1.6);
\begin{scope}
\clip (3.5,0) rectangle ++(4,12);
\draw (12.5,6) circle (2cm);
\end{scope}
}

\newcommand{\halftennis}{
\draw (0,0) rectangle (12,11);
\draw (0,0) rectangle ++(12,1.2);
\draw (0,11) rectangle ++(12,-1.2);
\draw (6,1.2) rectangle ++(6,8.6);
\draw (0.0,5.5) -- (0.2,5.5);
\draw (6,5.5) -- (12,5.5);
\draw[fill=white] (11.9,-0.4) rectangle ++ (0.1,-.2);
\draw[fill=white] (11.9,11.4) rectangle ++ (0.1,0.2);
}
\definecolor{green}{rgb}{0.0, 0.5, 0.0}
\begin{document}

\begin{tikzpicture}[background rectangle/.style={fill=orange}, show background rectangle, draw=white]

\halftennis
\begin{scope}[xshift=24cm, xscale=-1]
\halftennis
\end{scope}
\draw (12,-0.5) -- (12,11.5);
\end{tikzpicture}

\begin{tikzpicture}[background rectangle/.style={fill=green}, show background rectangle, draw=white]

\halffoot
\begin{scope}[xshift=20cm, xscale=-1]
\halffoot
\end{scope}
\draw[fill=white] (10,6) circle (2pt);
\end{tikzpicture}
\end{document}

PS: Comme j'ai pas converti les longueurs exactes, pour me faire pardonner, il y à le terrain de foot en cadeau.

alt text

EDIT : Je rajoute le terrain de Handball, qui lui est fait de node et à l'echelle.

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{backgrounds}

\definecolor{orange}{RGB}{255,163,44}
\definecolor{bleuprofond}{RGB}{35,138,181}
\definecolor{bleuint}{RGB}{46,181,236}

\begin{document}

\begin{tikzpicture}[background rectangle/.style={fill=bleuprofond}, show background rectangle, draw=white, line width=1pt]
\node[] (A) at (0,0) {};
\node[] (B) at (0,4) {};
\node[] (C) at (8,4) {};
\node[] (D) at (8,0) {};
\node[] (E) at (0,1.7) {};%but
\node[] (F) at (0,2.3) {};%but
\node[] (G) at (4,0) {};%centre
\node[] (H) at (4,4) {};%centre
\draw[fill=bleuint] (A.center) -- (B.center)-- (C.center)-- (D.center)-- (A.center)-- cycle;
\draw[fill=orange] (E) ++ (1.2,0) arc (0:-90:1.2);
\draw[fill=orange] (F) ++ (1.2,0) arc (0:90:1.2);
\draw[dashed] (E) ++ (1.8,0) arc (0:-70:1.8);
\draw[dashed,dash phase=-2pt] (F) ++ (1.8,0) arc (0:70:1.8);
\draw (1.2,1.7) -- (1.2,2.3);
\draw[dashed] (1.8,1.8) -- (1.8,2.3);
\draw (E.center) rectangle (F.west);
\fill[fill=orange] (0.01765,.5172)--(1.18236,1.665)--(1.18236,2.335)--(0.01765,3.4824);
\fill[fill=orange] (7.98235,.5172)--(6.81764,1.665)--(6.81764,2.335)--(7.98235,3.4824);
\draw  (0.8,1.97)--(0.8,2.03);
\draw  (1.4,1.9)--(1.4,2.1);
\draw (A.center) ++ (3.1,0) (3.1,-0.03)--(3.1,.03);
%fin partie gauche
\draw (H.center) -- (G.center);
%début partie droite
\node[] (I) at (8,1.7) {};%but
\node[] (J) at (8,2.3) {};%but
\draw[fill=orange] (I) ++ (-1.2,0) arc (180:270:1.2);
\draw[fill=orange] (J) ++ (-1.2,0) arc (180:90:1.2);
\draw[dashed,dash phase=-2pt] (J) ++ (-1.8,0) arc (180:110:1.8);
\draw[dashed] (I) ++ (-1.8,0) arc (180:250:1.8);
\draw(6.8,1.7) -- (6.8,2.3);
\draw[dashed] (6.2,1.8) -- (6.2,2.3);
\draw (I.center) rectangle (J.east);
\draw  (7.2,1.97)--(7.2,2.03);
\draw  (6.6,1.9)--(6.6,2.1);
\draw (A.center) ++ (4.9,0) (4.9,-0.03)--(4.9,.03);
\end{tikzpicture}
\end{document}

alt text

Lien permanent

Publiée 07 Nov '17, 23:38

Nikopol's gravatar image

Nikopol
1.0k614
Taux d'acceptation : 42%

Modifiée 11 Nov '17, 22:18

Arf... je viens de voir qu'un ecm a été ajouté. On peut toujours faire la même chose avec des nodes, mais est-ce utile dans ce cas? Avez vous besoin de les réutiliser par la suite ? C'est toujours possible mais ça fait beaucoup de nodes... Donc, si ce n'est pas utile ça me parait une méthode acceptable.

(07 Nov '17, 23:50) Nikopol Nikopol's gravatar image
2

Rajout du terrain de Handball avec des nodes.

(11 Nov '17, 22:20) Nikopol Nikopol's gravatar image

@Nikopol : un terrain de handball mesure 40 x 20 m. Vous avez divisé par 5 les longueurs exprimées en mètres ?

(12 Nov '17, 00:52) Pathe ♦♦ Pathe's gravatar image

oui, pour ne pas avoir un dessin trop grand, les nombres décimaux dans le code correspondent à des conversions de points en centimètres.

(12 Nov '17, 01:25) Nikopol Nikopol'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.