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 :

  1. x (pour l'orientation Gauche/Droite),
  2. y (pour l'orientation Haut/Bas) et
  3. z (pour l'orientation Debout/Couchée)

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 \draw de TikZ ?

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 :

  • A(0,0)
  • B({(5.1 * (\z) + (1 - (\z)) * 3) * (\x)},0)
  • C(0,{(5.1 * (1 - (\z)) + 3 * (\z)) * (\y)})

D'où le code ci-dessous, qui ne compile pas.

Ouvrir dans l'éditeur Overleaf
\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}
\usepackage{tkz-euclide}
    \usetkzobj{all}
\usepackage{xkeyval}

\newcount\x

\newcount\y

\newcount\z

\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}{}    
\define@cmdkey [DES] {Equerre} {CouleurInterieure}{}
\define@cmdkey [DES] {Equerre} {CouleurBord}{}
\define@cmdkey [DES] {Equerre} {bord}{}
\define@boolkey [DES] {Equerre} {xorientation}[true]{} % Gauche/Droite
\define@boolkey [DES] {Equerre} {yorientation}[true]{} % Haut/Bas
\define@boolkey [DES] {Equerre} {zorientation}[true]{} %Débout/Couchée
\define@cmdkey [DES] {Equerre} {xscale}{}
\define@cmdkey [DES] {Equerre} {yscale}{}
\presetkeys    [DES] {Equerre} 
{
    inclinaison = 0, 
    CouleurInterieure = black!50!blue!20!, 
    CouleurBord = black!30!blue!70!, 
    bord=thick, 
    xscale=1, 
    yscale=1
}{}
%
\newcommand{\Equerre}[2][]{%
    \setkeys[DES]{Equerre}{#1}
    \begin{scope}[shift={(#2)}, rotate=\cmdDES@Equerre@inclinaison, xscale=\cmdDES@Equerre@xscale, yscale=\cmdDES@Equerre@yscale]
    \ifDES@Equerre@xorientation
        \x = 1 % équerre dessinée vers la droite de l'axe des ordonnées
        \else
        \x = -1 % équerre dessinée vers la gauche de l'axe des ordonnées
    \fi
    \ifDES@Equerre@yorientation
        \y = 1 % équerre dessinée au-dessus de l'axe des abscisses
        \else
        \y = -1 % équerre dessinée en-dessous de l'axe des abscisses
    \fi
        \ifDES@Equerre@zorientation
        \z = 1 % équerre dessinée "debout"
        \else
        \z = 0 % équerre dessinée "couchée"
    \fi
%\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 = 3 * (\y);
      }
      ] (0,0) -- (\xB ,0) -- (0,\yC) -- cycle;
%\draw[\cmdDES@Equerre@bord,color=\cmdDES@Equerre@CouleurBord,fill=\cmdDES@Equerre@CouleurInterieure] 
%(0,0) -- ({5.1*\x},0) -- (0,{-3*\y}) -- cycle;
% Bord intérieur
%\draw[\cmdDES@Equerre@bord,color=\cmdDES@Equerre@CouleurBord,fill=white,smooth,rounded corners=3pt,opacity=1] 
%(0.6,{-0.6*\y}) -- (1.8,{-0.5*\y}) -- (3,{-0.6*\y}) -- (1.75,{-1.45*\y}) -- (0.6,{-1.975*\y}) -- (0.5,{-1.3*\y}) -- cycle;
% codage de l'angle droit
\draw[color=red] 
({(-0.4/\cmdDES@Equerre@xscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\x},0) -- 
({(-0.4/\cmdDES@Equerre@xscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\x},
{(-0.4/\cmdDES@Equerre@yscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\y}) -- 
(0,{(-0.4/\cmdDES@Equerre@yscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\y}); 
    \end{scope}
}
\makeatother

\begin{document}

\section*{Équerre}

\begin{tikzpicture}
    \Equerre[CouleurInterieure=yellow]{1,1}
    \Equerre[CouleurInterieure=green,yorientation=false]{1,-1} % équerre couchée vers la droite ???
    \Equerre[CouleurInterieure=blue,xorientation=false,yorientation=false]{-1,-1} % équerre vers le bas ???
    \Equerre[CouleurInterieure=red,xorientation=false]{-1,1} % équerre vers le bas ???
    \draw (0,0) node[red]{$\times$};
    \draw (0,0) node[red,below]{O};
\end{tikzpicture}

\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}

Posée 21 Déc '19, 15:57

pdesmons's gravatar image

pdesmons
294917
Taux d'acceptation : 40%

Modifiée 21 Déc '19, 20:01

Pathe's gravatar image

Pathe ♦♦
7.5k42204251


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}{}
define@cmdkey [DES] {Equerre} {CouleurInterieure}{} define@cmdkey [DES] {Equerre} {CouleurBord}{} define@cmdkey [DES] {Equerre} {bord}{} define@boolkey [DES] {Equerre} {xorientation}[true]{} % Gauche/Droite define@boolkey [DES] {Equerre} {yorientation}[true]{} % Haut/Bas define@boolkey [DES] {Equerre} {zorientation}[true]{} % Débout/Couchée define@cmdkey [DES] {Equerre} {xscale}{} define@cmdkey [DES] {Equerre} {yscale}{} presetkeys [DES] {Equerre} { inclinaison = 0, CouleurInterieure = black!50!blue!20!, CouleurBord = black!30!blue!70!, bord=thick, xorientation = true, yorientation = false, zorientation = false, xscale=1, yscale=1 }{} % newcommand{Equerre}[2][]{% setkeys[DES]{Equerre}{#1} begin{scope}[shift={(#2)}, rotate=cmdDES@Equerre@inclinaison, xscale=cmdDES@Equerre@xscale, yscale=cmdDES@Equerre@yscale] ifDES@Equerre@xorientation x = 1 % équerre dessinée vers la droite de l'axe des ordonnées else x = -1 % équerre dessinée vers la gauche de l'axe des ordonnées fi ifDES@Equerre@yorientation y = 1 % équerre dessinée au-dessus de l'axe des abscisses else y = -1 % équerre dessinée en-dessous de l'axe des abscisses fi ifDES@Equerre@zorientation z = 0 % équerre dessinée "debout" else z = 1 % équerre dessinée "couchée" fi pgfmathparse{(5.1 * (z) + 3 * (1 - (z))) * (x)} let xB pgfmathresult pgfmathparse{(5.1 * (1 - (z)) + 3 * (z)) * (y)} let yC pgfmathresult pgfmathparse{0.6 * (x)} let xD pgfmathresult pgfmathparse{0.6 * (y)} let yD pgfmathresult pgfmathparse{(1.75 * (z) + 0.5 * (1 - (z))) * (x)} let xE pgfmathresult pgfmathparse{(1.75 * (1 - (z)) + 0.5 * (z)) * (y)} let yE pgfmathresult pgfmathparse{(3 * (z) + 0.6 * (1 - (z))) * (x)} let xF pgfmathresult pgfmathparse{(3 * (1 - (z)) + 0.6 * (z)) * (y)} let yF pgfmathresult pgfmathparse{(1.75 * (z) + 1.45 * (1 - (z))) * (x)} let xG pgfmathresult pgfmathparse{(1.75 * (1 - (z)) + 1.45 * (z)) * (y)} let yG pgfmathresult pgfmathparse{(1.975 * (1 - (z)) + 0.6 * (z)) * (x)} let xH pgfmathresult pgfmathparse{(1.975 * (z) + 0.6 * (1 - (z))) * (y)} let yH pgfmathresult pgfmathparse{(0.5 * (z) + 1.3 * (1 - (z))) * (x)} let xI pgfmathresult pgfmathparse{(0.5 * (1 - (z)) + 1.3 * (z)) * (y)} let yI pgfmathresult draw[cmdDES@Equerre@bord,color=cmdDES@Equerre@CouleurBord,fill=cmdDES@Equerre@CouleurInterieure,opacity=0.5] (xD,yD)--(xE,yE)--(xF,yF)--(xG,yG)--(xH,yH)--(xI,yI)--cycle (0,0)--(xB,0)--(0,yC)--cycle; %draw[cmdDES@Equerre@bord,color=cmdDES@Equerre@CouleurBord,fill=cmdDES@Equerre@CouleurInterieure] %(0,0) -- ({5.1x},0) -- (0,{-3y}) -- cycle; % Bord intérieur %pgfmathparse{0.6 * (x)} let xD pgfmathresult %pgfmathparse{0.6 * (y)} let yD pgfmathresult %pgfmathparse{(1.75 * (z) + 0.5 * (1 - (z))) * (x)} let xE pgfmathresult %pgfmathparse{(1.75 * (1 - (z)) + 0.5 * (z)) * (y)} let yE pgfmathresult %pgfmathparse{(3 * (z) + 0.6 * (1 - (z))) * (x)} let xF pgfmathresult %pgfmathparse{(3 * (1 - (z)) + 0.6 * (z)) * (y)} let yF pgfmathresult %pgfmathparse{(1.75 * (z) + 1.45 * (1 - (z))) * (x)} let xG pgfmathresult %pgfmathparse{(1.75 * (1 - (z)) + 1.45 * (z)) * (y)} let yG pgfmathresult %pgfmathparse{(1.975 * (z) + 0.6 * (1 - (z))) * (x)} let xH pgfmathresult %pgfmathparse{(1.975 * (1 - (z)) + 0.6 * (z)) * (y)} let yH pgfmathresult %pgfmathparse{(0.5 * (z) + 1.3 * (1 - (z))) * (x)} let xI pgfmathresult %pgfmathparse{(0.5 * (1 - (z)) + 1.3 * (z)) * (y)} let yI pgfmathresult %draw[cmdDES@Equerre@bord,color=cmdDES@Equerre@CouleurBord,fill=white,smooth,rounded corners=3pt,opacity=0] (xD,yD)--(xE,yE)--(xF,yF)--(xG,yG)--(xH,yH)--(xI,yI)--cycle; %draw[cmdDES@Equerre@bord,color=cmdDES@Equerre@CouleurBord,fill=white,smooth,rounded corners=3pt,opacity=1] %(0.6,{-0.6y}) -- (1.8,{-0.5y}) -- (3,{-0.6y}) -- (1.75,{-1.45y}) -- (0.6,{-1.975y}) -- (0.5,{-1.3y}) -- cycle; % codage de l'angle droit pgfmathparse{0.3 * (x)} let xJ pgfmathresult pgfmathparse{0.3 * (x)} let xK pgfmathresult pgfmathparse{0.3 * (y)} let yK pgfmathresult pgfmathparse{0.3 * (y)} let yL pgfmathresult draw[color=red] (xJ,0)--(xK,yK)--(0,yL); %({(-0.4/cmdDES@Equerre@xscale)min(cmdDES@Equerre@xscale,cmdDES@Equerre@yscale)x},0) -- %({(-0.4/cmdDES@Equerre@xscale)min(cmdDES@Equerre@xscale,cmdDES@Equerre@yscale)x}, %{(-0.4/cmdDES@Equerre@yscale)min(cmdDES@Equerre@xscale,cmdDES@Equerre@yscale)y}) -- %(0,{(-0.4/cmdDES@Equerre@yscale)min(cmdDES@Equerre@xscale,cmdDES@Equerre@yscale)y}); end{scope} } makeatother

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;

Lien permanent

Publiée 22 Déc '19, 11:09

pdesmons's gravatar image

pdesmons
294917
Taux d'acceptation : 40%

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

(23 Déc '19, 19:54) nmarkey nmarkey's gravatar image

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 calc :

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

\newcommand\equerre[3]{%
  \coordinate(A) at (0,0);
  \coordinate(B) at ({(5.1 * #3 + (1 - #3) * 3) * #1},0);
  \coordinate(C) at (0,{(5.1 * (1 - (#3)) + 3 * (#3)) * (#2)});
  \draw (A) -- (B) -- (C) -- cycle;}

\begin{document}
\begin{tikzpicture}
  \equerre{1}{1}{-1}
\end{tikzpicture}
\end{document}
Lien permanent

Publiée 22 Déc '19, 00:37

nmarkey's gravatar image

nmarkey
1.4k29
Taux d'acceptation : 45%

A priori, c'est le comportement attendu, mais peu intuitif, de xkeyval :

  • la valeur par défaut (définie dans \@define@boolkey) est utilisée lorsqu'aucune valeur n'est donnée à une clef (mais que la clef est présente) ;
  • la valeur prédéfinie (par \presetkeys) est utilisée lorsque la clef n'est pas présente du tout.

(voir https://groups.google.com/forum/#!msg/fr.comp.text.tex/k7eqcXUKuRM/s4r1Or42KJoJ)

Deux solutions, donc :

  • mettre xorientation, yorentation, zorientation, sans leur associer de valeur, dans le premier argument de \Equerre ;
  • ou mettre la valeur par défaut dans presetkeys.
Lien permanent

Publiée 21 Déc '19, 23:57

nmarkey's gravatar image

nmarkey
1.4k29
Taux d'acceptation : 45%

J'ai une nouvelle proposition de code source ; cette fois-ci il compile grâce aux deux commandes \pgfmathparse et \pgfmathresult, mais je n'obtiens quand même pas le résultat escompté, à savoir faire pivoter mon équerre correctement selon les valeurs des booléens xorientation, yorientation et zorientation, passés en option de ma macro « équerre » dans laquelle sont modifiées les newcount \x, \y et \z.

Ouvrir dans l'éditeur Overleaf
\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}
\usepackage{tkz-euclide}
    \usetkzobj{all}
\usepackage{xkeyval}

\newcount\x

\newcount\y

\newcount\z

\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}{}    
\define@cmdkey [DES] {Equerre} {CouleurInterieure}{}
\define@cmdkey [DES] {Equerre} {CouleurBord}{}
\define@cmdkey [DES] {Equerre} {bord}{}
\define@boolkey [DES] {Equerre} {xorientation}[true]{} % Gauche/Droite
\define@boolkey [DES] {Equerre} {yorientation}[true]{} % Haut/Bas
\define@boolkey [DES] {Equerre} {zorientation}[true]{} %Débout/Couchée
\define@cmdkey [DES] {Equerre} {xscale}{}
\define@cmdkey [DES] {Equerre} {yscale}{}
\presetkeys    [DES] {Equerre} 
{
    inclinaison = 0, 
    CouleurInterieure = black!50!blue!20!, 
    CouleurBord = black!30!blue!70!, 
    bord=thick, 
    xscale=1, 
    yscale=1
}{}
%
\newcommand{\Equerre}[2][]{%
    \setkeys[DES]{Equerre}{#1}
    \begin{scope}[shift={(#2)}, rotate=\cmdDES@Equerre@inclinaison, xscale=\cmdDES@Equerre@xscale, yscale=\cmdDES@Equerre@yscale]
    \ifDES@Equerre@xorientation
        \x = 1 % équerre dessinée vers la droite de l'axe des ordonnées
        \else
        \x = -1 % équerre dessinée vers la gauche de l'axe des ordonnées
    \fi
    \ifDES@Equerre@yorientation
        \y = 1 % équerre dessinée au-dessus de l'axe des abscisses
        \else
        \y = -1 % équerre dessinée en-dessous de l'axe des abscisses
    \fi
        \ifDES@Equerre@zorientation
        \z = 1 % équerre dessinée "debout"
        \else
        \z = 0 % équerre dessinée "couchée"
    \fi
%\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;
      \pgfmathparse{(5.1 * (\z) + 3 * (1 - (\z))) * (\x)} \let \xB \pgfmathresult
      \pgfmathparse{(5.1 * (1 - (\z)) + 3 * (\z)) * (\y)} \let \yC \pgfmathresult
      \draw[\cmdDES@Equerre@bord,color=\cmdDES@Equerre@CouleurBord,fill=\cmdDES@Equerre@CouleurInterieure] (0,0) -- (\xB,0) -- (0,\yC) -- cycle;
%\draw[\cmdDES@Equerre@bord,color=\cmdDES@Equerre@CouleurBord,fill=\cmdDES@Equerre@CouleurInterieure] 
%(0,0) -- ({5.1*\x},0) -- (0,{-3*\y}) -- cycle;
% Bord intérieur
      \pgfmathparse{0.6 * (\x)} \let \xD \pgfmathresult
      \pgfmathparse{0.6 * (\y)} \let \yD \pgfmathresult
      \pgfmathparse{(1.75 * (\z) + 0.5 * (1 - (\z))) * (\x)} \let \xE \pgfmathresult
      \pgfmathparse{(1.75 * (1 - (\z)) + 0.5 * (\z)) * (\y)} \let \yE \pgfmathresult
      \pgfmathparse{(3 * (\z) + 0.6 * (1 - (\z))) * (\x)} \let \xF \pgfmathresult
      \pgfmathparse{(3 * (1 - (\z)) + 0.6 * (\z)) * (\y)} \let \yF \pgfmathresult
      \pgfmathparse{(1.75 * (\z) + 1.45 * (1 - (\z))) * (\x)} \let \xG \pgfmathresult
      \pgfmathparse{(1.75 * (1 - (\z)) + 1.45 * (\z)) * (\y)} \let \yG \pgfmathresult
      \pgfmathparse{(1.975 * (\z) + 0.6 * (1 - (\z))) * (\x)} \let \xH \pgfmathresult
      \pgfmathparse{(1.975 * (1 - (\z)) + 0.6 * (\z)) * (\y)} \let \yH \pgfmathresult
      \pgfmathparse{(0.5 * (\z) + 1.3 * (1 - (\z))) * (\x)} \let \xI \pgfmathresult
      \pgfmathparse{(0.5 * (1 - (\z)) + 1.3 * (\z)) * (\y)} \let \yI \pgfmathresult
\draw[\cmdDES@Equerre@bord,color=\cmdDES@Equerre@CouleurBord,fill=white,smooth,rounded corners=3pt,opacity=0]
(\xD,\yD)--(\xE,\yE)--(\xF,\yF)--(\xG,\yG)--(\xH,\yH)--(\xI,\yI)--cycle;
%\draw[\cmdDES@Equerre@bord,color=\cmdDES@Equerre@CouleurBord,fill=white,smooth,rounded corners=3pt,opacity=1] 
%(0.6,{-0.6*\y}) -- (1.8,{-0.5*\y}) -- (3,{-0.6*\y}) -- (1.75,{-1.45*\y}) -- (0.6,{-1.975*\y}) -- (0.5,{-1.3*\y}) -- cycle;
% codage de l'angle droit
      \pgfmathparse{0.3 * (\x)} \let \xJ \pgfmathresult
      \pgfmathparse{0.3 * (\x)} \let \xK \pgfmathresult
      \pgfmathparse{0.3 * (\y)} \let \yK \pgfmathresult
      \pgfmathparse{0.3 * (\y)} \let \yL \pgfmathresult
\draw[color=red] (\xJ,0)--(\xK,\yK)--(0,\yL);
%({(-0.4/\cmdDES@Equerre@xscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\x},0) -- 
%({(-0.4/\cmdDES@Equerre@xscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\x},
%{(-0.4/\cmdDES@Equerre@yscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\y}) -- 
%(0,{(-0.4/\cmdDES@Equerre@yscale)*min(\cmdDES@Equerre@xscale,\cmdDES@Equerre@yscale)*\y}); 
    \end{scope}
}
\makeatother

\begin{document}

\section*{Équerre}

(x;y;z)=(1;1;1) équerre couchée vers la droite et vers le haut ???
\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 bas ???
\begin{tikzpicture}
    \Equerre[CouleurInterieure=green,yorientation=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 le bas ???
\begin{tikzpicture} 
    \Equerre[CouleurInterieure=blue,xorientation=false,yorientation=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=red,xorientation=false]{-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 haut ???
\begin{tikzpicture}
    \Equerre[CouleurInterieure=yellow,zorientation=false]{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}
    \Equerre[CouleurInterieure=green,yorientation=false,zorientation=false]{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=blue,xorientation=false,yorientation=false,zorientation=false]{-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=red,xorientation=false,zorientation=false]{-1,1} 
    \draw (0,0) node[red]{$\times$};
    \draw (0,0) node[red,below]{O};
\end{tikzpicture}

\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}
Lien permanent

Publiée 21 Déc '19, 18:16

pdesmons's gravatar image

pdesmons
294917
Taux d'acceptation : 40%

Modifiée 21 Déc '19, 20:03

Pathe's gravatar image

Pathe ♦♦
7.5k42204251

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.