Rédigé le : 03/03/2024
Dans cet article, nous allons décomposer et expliquer un fragment de code \(\LaTeX\) utilisant le package TikZ, conçu pour dessiner un disque divisé en plusieurs secteurs, avec une option pour colorier un nombre spécifié de ces secteurs.
Le code suivant utilise TikZ pour créer un diagramme où un disque est divisé en secteurs, et certains d’entre eux sont colorés différemment pour les mettre en évidence.
\begin{document}
\begin{tikzpicture}
\newcommand{\NumSectors}{6} % Nombre total de secteurs
\newcommand{\NumColSectors}{2} % Nombre de secteurs consécutifs à colorier
\pgfmathsetmacro{\angle}{360/\NumSectors} % Angle de chaque secteur
% Dessiner et colorier les secteurs
\foreach \s in {1,...,\NumSectors}{
% Calculer l'angle de début et de fin pour chaque secteur
\pgfmathsetmacro{\startAngle}{(\s-1)*\angle}
\pgfmathsetmacro{\endAngle}{\s*\angle}
% Colorier les premiers \NumColSectors secteurs, puis dessiner les autres normalement
\ifnum\s>\NumColSectors
\draw (0,0) -- (\startAngle:2cm) arc (\startAngle:\endAngle:2cm) -- cycle;
\else
\fill[red] (0,0) -- (\startAngle:2cm) arc (\startAngle:\endAngle:2cm) -- cycle;
\fi
}
\end{tikzpicture}
\end{document}
Définition des Paramètres : \newcommand{\NumSectors}{6}
définit le nombre total de secteurs. \newcommand{\NumColSectors}{2}
spécifie le nombre de secteurs consécutifs à colorier.
Calcul de l’Angle : \pgfmathsetmacro{\angle}{360/\NumSectors}
calcule l’angle de chaque secteur en divisant 360 degrés par le nombre total de secteurs.
Boucle de Dessin : La boucle \foreach
parcourt chaque secteur pour le dessiner. Pour chaque secteur, l’angle de début et de fin est calculé pour déterminer sa position.
Condition de Coloration : À l’intérieur de la boucle, une condition if
vérifie si le secteur courant doit être coloré (les premiers \NumColSectors
) ou simplement dessiné.
Ce code est une nouvelle illustration de la façon dont TikZ peut être utilisé pour créer des représentations mathématiques plus ou moins complexes de manière relativement simple et intuitive.