Je souhaite pouvoir dessiner une équerre dans diverses positions (8 exactement : vers la droite/vers la gauche, debout/couchée, vers le haut/le bas) : elle est modélisée par le triangle ABC rectangle en A. Je souhaite automatiser le positionnement de l'équerre grâce à une macro du même nom à l'aide d'options bien choisies. Je dois donc calculer des coordonnées adaptées à chaque situation : l'abscisse de B et l'ordonnée de C. Pour cela j'utilise des variables :
dont je modifie les valeurs en fonction des options choisies. Le problème est donc le suivant : comment réaliser des calculs sous TikZ et passer les résultats dans les coordonnées des points à tracer avec la commande Les solutions que j'ai trouvées actuellement proposent d'encadrer les résultats entre accolades mais cela ne fonctionne pas. Les coordonnées cartésiennes à obtenir sont donc :
D'où le code ci-dessous, qui ne compile pas. Ouvrir dans l'éditeur Overleaf
|
A priori, c'est le comportement attendu, mais peu intuitif, de
(voir https://groups.google.com/forum/#!msg/fr.comp.text.tex/k7eqcXUKuRM/s4r1Or42KJoJ) Deux solutions, donc :
|
Quant à la question initiale (comment faire des calculs de coordonnées avec tikz ?), la solution était bonne, mais il fallait juste inclure la bibliothèque Ouvrir dans l'éditeur Overleaf
|
J'ai une nouvelle proposition de code source ; cette fois-ci il compile grâce aux deux commandes Ouvrir dans l'éditeur Overleaf
|
Les deux propositions de nmarkey me conviennent et solutionnent mon code : l'orientation souhaitée est parfaitement réalisée. Mais j'ai évidemment un autre problème : il devrait y avoir un vide ("trou blanc") dans la partie "centrale" des équerres. Or ce vide n'apparaît que lorsque les équerres sont dessinées debout... (voir les différences d'affichage dans les sous-sections "Equerres couchées" et "Equerres debout" dans le fichier PDF produit) ? documentclass[12pt,a4paper]{article} usepackage[latin1,utf8]{inputenc} usepackage[french]{babel} usepackage[T1]{fontenc} usepackage{amsmath} usepackage{amsfonts} usepackage{amssymb} usepackage{lmodern} usepackage{fourier} usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry} usepackage{tikz} usetikzlibrary{patterns,math,calc} usepackage{tkz-euclide} usetkzobj{all} usepackage{xkeyval} newcountx newcounty newcountz %newcountxB %newcountyC %newcountxD %newcountyD %newcountxE %newcountyE %newcountxF %newcountyF %newcountxG %newcountyG %newcountxH %newcountyH %newcountxI %newcountyI %newcountxJ %newcountxK %newcountyk %newcountyL makeatletter
%----------> Equerre <----------
definecolor{bleuI}{cmyk}{.2,.1,.1,.1}%black!50!blue!20!
definecolor{bleuB}{cmyk}{0.2,0.4,0.4,0.05}%black!30!blue!70!
define@cmdkey [DES] {Equerre} {inclinaison}{} begin{document} section*{Equerre} subsection{Equerres couchées} Par défaut (x;y;z)=(1;-1;1) c'est-à-dire xorientation = true, yorientation =false, zorientation = false. (x;y;z)=(1;-1;1) équerre couchée vers la droite et vers le bas begin{tikzpicture} Equerre[CouleurInterieure=yellow]{1,-1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} (x;y;z)=(1;1;1) équerre couchée vers la droite et vers le haut begin{tikzpicture} Equerre[CouleurInterieure=green,yorientation=true]{1,1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} (x;y;z)=(-1;-1;1) équerre couchée vers la gauche et le bas begin{tikzpicture} Equerre[CouleurInterieure=blue,xorientation=false]{-1,-1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} (x;y;z)=(-1;1;1) équerre couchée vers la gauche et vers le haut begin{tikzpicture} Equerre[CouleurInterieure=pink,xorientation=false,yorientation=true]{-1,1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} subsection{Equerres debout} Par défaut (x;y;z)=(1;-1;1) c'est-à-dire xorientation = true, yorientation =false, zorientation = false. (x;y;z)=(1;1;0) équerre debout vers la droite et vers le haut begin{tikzpicture} Equerre[CouleurInterieure=orange,yorientation=true,zorientation=true]{1,1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} (x;y;z)=(1;-1;0) équerre debout vers la droite et vers le bas ??? begin{tikzpicture} draw[red] (-2,-2)--(6,-2); Equerre[CouleurInterieure=cyan,zorientation=true]{1,-1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} (x;y;z)=(-1;-1;0) équerre debout vers la gauche et le bas ??? begin{tikzpicture} Equerre[CouleurInterieure=gray,xorientation=false,zorientation=true]{-1,-1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} (x;y;z)=(-1;1;0) équerre debout vers la gauche et vers le haut ??? begin{tikzpicture} Equerre[CouleurInterieure=purple,xorientation=false,yorientation=true,zorientation=true]{-1,1} draw (0,0) node[red]{$times$}; draw (0,0) node[red,below]{O}; end{tikzpicture} subsection{Autres exemples} begin{tikzpicture} Equerre[inclinaison=90,CouleurInterieure=yellow,xscale=1,yscale=1]{-1,-1} Equerre[bord=dashed,inclinaison=-60,CouleurBord=red,xscale=1.5,yscale=.75]{4,1} Equerre[bord=dashed,inclinaison=30,CouleurBord=black,CouleurInterieure=cyan,xscale=0.5,yscale=0.5]{5,-5} end{tikzpicture} begin{tikzpicture} Equerre[CouleurInterieure=yellow]{0,0} Equerre[CouleurInterieure=orange]{9,0} Equerre[CouleurInterieure=green,yorientation=false]{0,-6} Equerre[CouleurInterieure=blue,xorientation=false,yorientation=false]{9,-6} end{tikzpicture} end{document} Avec la bibliothèque calc %draw (x,y) node[green,below]{$times$}; %draw (x,y) node[green,below]{O}; %coordinate(A) at (0,0); %coordinate(B) at ({(5.1 * z + (1 - z) * 3) * x},0); %coordinate(C) at (0,{3*y}); % Bord extérieur %draw[cmdDES@Equerre@bord,color=cmdDES@Equerre@CouleurBord,fill=cmdDES@Equerre@CouleurInterieure] %(A) -- (B) -- (C) -- cycle; %draw[cmdDES@Equerre@bord, %color=cmdDES@Equerre@CouleurBord, %fill=cmdDES@Equerre@CouleurInterieure, %evaluate={ %xB = (5.1 * (z) + (1 - (z)) * 3) * (x); %yC = (5.1 * (1 - (z)) + 3 * (z)) * (y); %} %] (0,0) -- (xB ,0) -- (0,yC) -- cycle; 1
Je vous recommande de lire et appliquer les conseils de mise en forme de code LaTeX dans la FAQ : https://texnique.fr/osqa/faq/#custom-id-code |