Линии обрезки Tikz на пересечении

Nov 29 2020

Я пытаюсь придумать способ рисования «параметрических» прямоугольных треугольников, то есть я изменяю длину гипотенузы \hypoи один из внутренних углов, \alfaи он должен рисовать треугольник за меня. Пока я сделал это

\documentclass[border=1mm]{standalone}

\usepackage{tikz}

\usetikzlibrary{calc, angles, intersections}

\begin{document}
    \begin{tikzpicture}
        \def\alfa{55}
        \def\hypo{3}
        \draw[name path= A-C] (0,0) node[below left] (A) {A} -- (90-\alfa:3);
        \draw (0,0) -- (\hypo,0) node[below right] (B) {B} -- ++ (180-\alfa:3);
        \path[name path= B-C] (\hypo,0) -- ++ (180-\alfa:3);
        \node [name intersections={of= A-C and B-C}, above] at (intersection-1) {C};
    \end{tikzpicture}
\end{document}

Я не могу понять, как обрезать два катета на их пересечении.

Вдобавок я не думаю, что это хорошая идея - жестко кодировать их длину (здесь 3 единицы). Я сделал это, потому что если они слишком короткие, они не пересекаются, и Тикз не может найти пересечение. Было бы лучше позволить LaTeX (или Tikz) вычислить правильную длину, чтобы добраться до перекрестка, а не пройти его. Я пытался найти решение в руководстве и в Интернете, но не нашел ничего действительно полезного. есть идеи как это сделать?

Ответы

5 Noname Nov 29 2020 at 01:50

Вы можете использовать, overlayчтобы исключить вспомогательные координаты из ограничивающей рамки. Кстати, вам не нужна intersectionsбиблиотека для вычисления пересечения прямых линий.

\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
   \def\alfa{55}
   \def\hypo{3}
   \path[overlay] (0,0) coordinate (A) ++ (90-\alfa:1) coordinate (C')
    (\hypo,0) coordinate (B)  ++ (180-\alfa:1) coordinate (C'')
    (intersection of A--C' and B--C'') coordinate (C);
    %or
    %(intersection cs:first line={(A)--(C')},second line={(B)--(C'')}) coordinate (C);
   \draw (A) node[below left]  {$A$}    -- (B) node[below right] {$B$}
    -- (C) node[above]{$C$} -- cycle;
\end{tikzpicture}
\end{document}

Конечно, можно вычислить координаты C аналитически, см., Например, этот поток .