Латекс/Тикз: провести вертикальную линию к прямой

Может быть, вы можете мне помочь, я пытаюсь провести линию от точки/координаты до прямой линии. Я использую Tikz для рисования.

      \begin{tikzpicture}
      \coordinate [label=left:$A$] (A) at (-5,-5){};
      \coordinate [label=right:$B$] (B) at (5,-5) {};
      \coordinate [label=right:$C$] (C) at (5,1) {};
      \coordinate [label=left:$D$] (D) at (-5,1) {};

      \draw [thick] (A) -- node[midway] {$\parallel$} (B) -- node[sloped]{$\parallel$} (C) -- (D) -- cycle;

      \coordinate (S1) at ($(D)!0.66!(C)$);
      \coordinate (S2) at ($(A)!0.11!(B)$);
      \draw [very thick] (S1) -- node[above]{x} (S2);
      \draw [red!100, thick] (S1) -- node[above]{T} (A -| B );
      \end{tikzpicture}

здесь должна быть красная линия

красная линия должна идти от координаты (S1) до прямой линии (A -- B) по вертикали. Пробовал рисовать так:

     \draw [red!100, thick] (S1) -- node[above]{T} (A -| B );

Но затем он рисует линию для координаты A

Спасибо,


person zwerg4    schedule 21.11.2017    source источник


Ответы (3)


Вам не нужно определять новую координату, но вы можете использовать идентификаторы проекций из библиотеки calc.

В последней строке вам просто нужно

\draw [red!100, thick] (S1) -- node[left]{T} ($(A)!(S1)!(B)$);

Это среднее вдоль А-В принимает точку, которую S1 проецирует на А-В.

person percusse    schedule 31.01.2018
comment
В этом случае вы можете просто использовать операцию тройника, как это пытался сделать OP, но с правильными координатами. - person Andrew Swann; 01.02.2018
comment
@AndrewSwann Только в этом случае, когда A -- B горизонтально. - person percusse; 01.02.2018
comment
Действительно тройник только для горизонтального/вертикального корпуса. - person Andrew Swann; 01.02.2018

Вы можете сделать это, определив новую координату (скажем, S3) для точки на AB:

\begin{tikzpicture}
\coordinate [label=left:$A$] (A) at (-5,-5){};
\coordinate [label=right:$B$] (B) at (5,-5) {};
\coordinate [label=right:$C$] (C) at (5,1) {};
\coordinate [label=left:$D$] (D) at (-5,1) {};

\draw [thick] (A) -- node[midway] {$\parallel$} (B) -- node[sloped]{$\parallel$} (C) -- (D) -- cycle;

\coordinate (S1) at ($(D)!0.66!(C)$);
\coordinate (S2) at ($(A)!0.11!(B)$);
\coordinate (S3) at ($(A)!0.66!(B)$);
\draw [very thick] (S1) -- node[above]{x} (S2);
\draw [red!100, thick] (S1) -- node[left]{T} (S3);
\end{tikzpicture}

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

person pchaigno    schedule 27.11.2017

Ваш синтаксис почти правильный, но операторы тройника |- и -| принимают координату x с одной стороны и координату y с другой. Когда вы пишете A -| B, вы получаете координату y точки A и координату x точки B, но в вашем коде A и B имеют одну и ту же координату x, поэтому это снова дает вам точку A. Вместо этого вы хотите A -| S1 или эквивалентно S1 |- A.

 \draw [red!100, thick] (S1) --   node[left]{T} (S1 |- A);

Пример вывода

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
     \begin{tikzpicture}
      \coordinate [label=left:$A$] (A) at (-5,-5){};
      \coordinate [label=right:$B$] (B) at (5,-5) {};
      \coordinate [label=right:$C$] (C) at (5,1) {};
      \coordinate [label=left:$D$] (D) at (-5,1) {};

      \draw [thick] (A) -- node[midway] {$\parallel$} (B) -- node[sloped]{$\parallel$} (C) -- (D) -- cycle;

      \coordinate (S1) at ($(D)!0.66!(C)$);
      \coordinate (S2) at ($(A)!0.11!(B)$);
      \draw [very thick] (S1) -- node[above]{x} (S2);
      \draw [red!100, thick] (S1) --   node[left]{T} (S1 |- A);
      \end{tikzpicture}
\end{document}
person Andrew Swann    schedule 01.02.2018