Latex / Tikz: начертайте вертикална линия до права линия

Може би можете да ми помогнете, опитвам се да начертая линия от точка/координата до права линия. Използвам 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)$);

Това означава по A-B да вземе точката, която S1 е проектирана върху A-B.

person percusse    schedule 31.01.2018
comment
В този случай можете просто да използвате операцията tee, както се опита да направи 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

Вашият синтаксис е почти правилен, но операторите tee |- и -| вземат координатата 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