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 ♦♦
1.9k655
Taux d'acceptation : 55%

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


Solution 1.

Une solution avec tikz basé 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
2.5k26
Taux d'acceptation : 51%

Modifiée 13 Jui, 14:24

stefan's gravatar image

stefan ♦♦
866

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, 12:47) Paul Gaborit Paul%20Gaborit's gravatar image

@Paul Gaborit bonne remarque merci.

(26 Jan, 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
\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
1.5k14
Taux d'acceptation : 28%

Modifiée 30 Déc '16, 14:32

Pathe's gravatar image

Pathe ♦♦
1.9k655

Il existe plusieurs solutions avec tikz, une autre à titre d'exemple utilisant la librairie intersections qui permet de calculer les intersections de chemins arbitraires (sous votre contrainte de ne pas définir des points mais d'utiliser des longueurs).

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, 11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usepackage[frenchb]{babel}

\begin{document}
% définition des longueurs
\def\hypotenuse{18}
\def\cote{11}
\begin{tikzpicture}[scale=.2]
% cercle de rayon l'hypoténuse nommé « cercle »
\path[name path=cercle,draw](0,0) circle(\hypotenuse cm);
% parallèle à l'axe des abscisses d'ordonnée le sinus voulu nommé « oppose »
\path[name path=oppose,draw](-\hypotenuse,\cote)--(\hypotenuse,\cote);
% point d'intersection des deux chemins, le premier est nommé intersection-1, le deuxième intersection-2, etc
\path[name intersections={of= cercle and oppose}];
\draw[red,thick](0,0)node[below left]{$A$}--(intersection-1)node[above]{$B$}|-(0,0)node[pos=.5,below right]{$C$};
\end{tikzpicture}
\end{document}

Il existe d'autres solutions, notamment celle utilisant le package tkz-euclide d'Alain Matthes.

alt text

Lien permanent

Publiée 14 Jui, 02:09

Andr%C3%A9C's gravatar image

AndréC
31818
Taux d'acceptation : 12%

Modifiée 01 Jul, 01:38

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 ♦♦
1.9k655
Taux d'acceptation : 55%

Modifiée 13 Jui, 14:13

stefan's gravatar image

stefan ♦♦
866

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, 03:52) Paul Gaborit Paul%20Gaborit'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.

Mots-clés de la question :

×17
×1

Question posée : 28 Déc '16, 14:01

Question vue : 1,080 fois

Dernière mise à jour : 01 Jul, 01:38