Как нарисовать треугольники, используя длины и углы?

Как нарисовать треугольники, используя длины и углы?

Я только начинаю разбираться с сеткой точек Tikz и мне удалось нарисовать треугольники с помощью этого метода, но есть ли способ рисовать, напрямую вводя длины линий и углы?

Например, если бы мне нужны были углы 125 градусов, 40 градусов и 15 градусов с гипотенузой 15 см, как бы я это задал?

решение1

Для сравнения, вот альтернативный метод с использованием Metapost. (Код — это код ConTeXt, но вы также можете использовать код Metapost в LaTeX, используя пакет gmp).

В Metapost неизвестные числовые значения могут быть указаны с помощью whateverключевого слова. Metapost вычисляет значение whatevers так, чтобы все уравнения были удовлетворены.

Давайте обозначим вершины треугольника как A, Bи C. Предположим, мы хотим нарисовать ABтак, чтобы он был параллелен оси x, ACбыл гипотенузой, а угол Aбыл 40, а угол Bбыл 125. (Угол Cавтоматически будет 15). Мы можем указать это в Metapost как:

numeric angleA, angleB;
angleA := 40;
angleB := 125;

numeric AC;
AC := 15cm;

Мы выбираем точку Aкак начало координат. Затем точка Cполностью определена

pair A, B, C;

A := origin;
C := (AC,0) rotated angleA;

Чтобы указать точку B, мы приводим два уравнения для B. Первое — это Bдолжно быть ABрасстояние от Aвдоль оси x, т.е.

B = (whatever, 0);

Во-вторых, это CBдолжно быть под углом B, т.е.

B = ((whatever,0) rotated -angleB) shifted C;

Metapost находит последовательное решение для этих двух спецификаций. Вот полный код:

\starttext
\startMPpage[offset=3mm]
  begingroup;
    numeric angleA, angleB, angleC;
    angleA := 40;
    angleB := 125;

    numeric AC;
    AC := 15cm;

    pair A, B, C;

    A := origin;
    C := (AC,0) rotated angleA;

    % Let Metapost figure out B.
    B = (whatever, 0);
    B = ((whatever,0) rotated -angleB) shifted C;

    path triangle ;
    triangle := A -- B -- C --cycle;

    draw triangle;

    pair c; c := center triangle;

    freedotlabel("$A$", A, c);
    freedotlabel("$B$", B, c);
    freedotlabel("$C$", C, c);

  endgroup;
\stopMPpage
\stoptext

который дает

введите описание изображения здесь

решение2

Так?

\documentclass[margin=1cm]{standalone}

\usepackage{tikz}
\usetikzlibrary{intersections}

\begin{document}
  \begin{tikzpicture}
  \def\angf{40} %First angle
  \def\angs{125} %Second angle
  \def\hypo{15} %Hypotenus
  \coordinate (O) at (0,0);
  \draw[name path=line 1] (O) --++ (\angf:\hypo) coordinate (A);
  \path[name path=line 2] (O) --++ (0:2\hypo);
  \path[name path=line 3] (A) --++ (-\angs:2\hypo);
  \path [name intersections={of=line 2 and line 3,by=E}];
  \pgfresetboundingbox
  \draw (O)--(E)--(A);
  \end{tikzpicture}
\end{document}

введите описание изображения здесь

решение3

Знай свою математику!

Соотношения между углами и длинами задаются формулойзакон синусов.

Выход

введите описание изображения здесь

Код

\documentclass[12pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[scale=.5]
  % "hypothenuse"
  \def\A{15}
  % the angles
  \def\angA{125}
  \def\angB{40}
  \pgfmathsetmacro{\angC}{180-\angA-\angB}
  % the law of sines
  \pgfmathsetmacro{\d}{\A/sin(\angA)}
  \pgfmathsetmacro{\C}{\d*sin(\angC)}
  \draw (0,0) -- (\angB:\A) -- (0:\C) -- cycle;
\end{tikzpicture}
\end{document}

Связанный контент