3
1

Si j'ai la longueur de l'hypoténuse et celle d'un côté, comment puis-je construire un triangle rectangle en TikZ ? Je suis à peu près certain que c'est possible mais je n'y réussis pas. J'ai regardé du côté de pgfmath mais je ne réussis pas à incorporer des valeurs calculées dans mes figures.

Posée 28 Déc '16, 14:01

Pathe's gravatar image

Pathe ♦♦
7.5k42203251
Taux d'acceptation : 55%

Modifiée 28 Déc '16, 15:15


1 - Malgré la très belle introduction à pstricks de Jean-Pierre Casteleyn, lors du stage LaTeX de Dunkerque, je n'utilise pas pstricks et reste fidèle à TikZ.

2 - Il s'agissait pour moi de calculer la position des sommets du triangle à partir de la longueur de l'hypoténuse et de celle d'un côté. La solution proposée par touhami ne répondait pas à cette demande, mais elle m'a appris à utiliser les fonctions \pgfmathparse et \pgfmathresult. Je propose le code suivant :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\thispagestyle{empty}

\begin{tikzpicture}[x = 1 mm, y = 1 mm, scale = 2]
    \clip (-3,-3) rectangle (20,20);
    % the axes
    \draw (0, -20) -- (0, 20);
    \draw (-20, 0) -- (30, 0);
    % the beam
    \draw (0,0) circle [radius=18mm];
    % from texnique
    % Hypotenuse = radius = 18
    % Opposite = half plate = 11
    \coordinate (A) at (0,0);
    \pgfmathparse{asin(11/18)}
    \coordinate (B) at (\pgfmathresult:18 |- 0,0);
    \coordinate (C) at (\pgfmathresult:18);
    \draw[red] (A) node[anchor=north east] {A}-- (B) node[anchor=north] {B} -- (C) node[anchor=south] {C} --cycle;
\end{tikzpicture}

\end{document}

triangle

J'ai calculé la position de C à partir de l'angle en A, que j'ai déterminé en divisant la longueur du côté opposé par celle de l'hypoténuse et en appliquant la fonction arc sinus au résultat.

J'ai ensuite déterminé la position du point B, qui se trouve à l'intersection (|-, en TikZ) de la verticale issue du point C et de l'axe des abscisses.

J'ai donc déterminé la position des points B & C. Je puis donc continuer mon travail. Vive texnique.fr et sa communauté !

Lien permanent

Publiée 30 Déc '16, 15:19

Pathe's gravatar image

Pathe ♦♦
7.5k42203251
Taux d'acceptation : 55%

Modifiée 13 Jui '17, 14:13

stefan's gravatar image

stefan ♦♦
10618

1

@Pathe La solution proposée par touhami ne répondait pas à cette demande. AMHA ce n'est pas vrai. On peut résoudre un exercice de mathématiques par des méthodes différentes. Ici j'ai choisi la méthode qui m'apparis simple. :-)

(30 Déc '16, 18:22) touhami touhami's gravatar image

Vous utilisez deux points (\coordinate (A) at (0,0); et \coordinate (B) at (3.2,0);) là où je ne disposais pas de cette information : je n'avais que deux longueurs. Voilà pourquoi j'ai fait cette remarque.

Mais je suis bien d'accord avec vous, on peut résoudre un exercice par plusieurs méthodes. Ce fil le montre, avec vos différentes propositions en TikZ et celle de Bernard en pstricks.

(30 Déc '16, 18:25) Pathe ♦♦ Pathe's gravatar image
3

Dans 99% des cas, en TikZ, \pgfmathparse et \pgfmathresult ne sont pas nécessaires. En reprenant le calcul de B dans votre exemple, voici ce qu'on peut écrire pour ne pas les utiliser: \coordinate (B) at ({asin(11/18)}:18 |- 0,0);

(27 Jan '17, 03:52) Paul Gaborit Paul%20Gaborit's gravatar image

Solution 1.

Une solution avec TikZ basée sur \pgfmathparse et la règle de Pythagore.

Ouvrir dans l'éditeur Overleaf
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (3.2,0);
\pgfmathparse{sqrt((5.5)^2-(3.2)^2)}
\coordinate (C) at (0,\pgfmathresult);
\draw (A)--(B)--(C)--cycle;
\end{tikzpicture}

ou (plus courte, mais moins élégante !) :

Ouvrir dans l'éditeur Overleaf
\begin{tikzpicture}
\pgfmathparse{sqrt((5)^2-(3)^2)}
\edef\triangle{\pgfmathresult}
\draw (0,0)--(3,0)--(0,\triangle)--cycle;
\end{tikzpicture}

ECM

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

\begin{document}

\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (3.2,0);
\pgfmathparse{sqrt((5.5)^2-(3.2)^2)}
\coordinate (C) at (0,\pgfmathresult);
\draw (A)--(B)--(C)--cycle;
\end{tikzpicture}
ou encore
\begin{tikzpicture}
\pgfmathparse{sqrt((5)^2-(3)^2)}
\edef\triangle{\pgfmathresult}
\draw (0,0)--(3,0)--(0,\triangle)--cycle;
\end{tikzpicture}

\end{document}

triangles

Solution 2.

Une autre solution (plus élégante). Voir section 13.5 Coordinate Calculations de la documentation.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc} 
\begin{document}

\begin{tikzpicture}
\draw (0,0)--(3.2,0)--($sqrt((5.4)^2-(3.2)^2)*(0,1)$)--cycle;
\end{tikzpicture}

\end{document}

triangle

Lien permanent

Publiée 28 Déc '16, 21:34

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 10 Aoû '17, 16:59

Pathe's gravatar image

Pathe ♦♦
7.5k42203251

4

Pour insérer un calcul dans une coordonnée (lorsqu'il contient des parenthèses), il suffit de l'entourer d'accolades. Ici, la solution 2 deviendrait: \draw (0,0)--(3.2,0)--(0,{sqrt((5.4)^2-(3.2)^2)})--cycle; (et il n'y a plus besoin de calc).

(26 Jan '17, 12:47) Paul Gaborit Paul%20Gaborit's gravatar image

@Paul Gaborit bonne remarque merci.

(26 Jan '17, 18:23) touhami touhami's gravatar image

En TikZ, je ne sais pas. Mais en pstricks, c'est assez facile avec l'extension pst-eucl de simuler la construction à la règle et au compas, et j'imagine qu'il y avoir l'équivalent en TikZ. Voici donc ma solution, qui peut être compilée avec pdflatex pour peu qu'on ajoute au compilateur l'option --enable-write18 sous MiKTeX, ou -shell-escape sous TeX Live ou MacTeX:

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,10pt, svgnames, border=3pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}%
\usepackage{lmodern}
\usepackage{pst-eucl, auto-pst-pdf}

\begin{document}

\begin{pspicture*}(-5,-5)(5,5)
\psset{dimen=middle, linejoin=1}
\pstGeonode[PointSymbol=none, PosAngle=-90](-4,0){B}(0,0){O}(4,0){C}(2.5,0){L}
\pstArcOAB[linewidth=0.4pt, linecolor=LightSteelBlue]{O}{C}{B}
\psdots[dotstyle=|, dotsize=5pt, linecolor=SteelBlue](B)(C)(L)
\psdot[linecolor=SteelBlue, linecolor=SteelBlue](O)
\pstInterCC[PosAngleA=50, RadiusA=\pstDistAB{B}{L}, CodeFigA=true, CodeFigAarc=false, CodeFigColor=OrangeRed! 50, linewidth=0.4pt, linecolor=OrangeRed]{B}{}{O}{B}{A}{}
\pspolygon[linecolor=OrangeRed](B)(A)(C)
\end{pspicture*}

\end{document} 
![alt text][1]

alt text

Lien permanent

Publiée 28 Déc '16, 17:48

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 10 Aoû '17, 17:00

Pathe's gravatar image

Pathe ♦♦
7.5k42203251

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.