Seite 1 von 1

Vektorkette mit relativen Koordinaten zeichnen

Verfasst: Do 10. Jan 2019, 10:06
von lenherrg
Liebe Experten,

gerne möchte ich möglichst elegant eine Vektorkette (inkl. resultierender Vektor) zeichnen. Die Vektorkette soll relativ gezeichnet werden.

Wie erreiche ich, dass bei allen Teilvektoren die Pfeilspitze jeweils auch gezeichnet wird?
Wie kann ich den resultierenden Vektor in vollständiger Länge hinkriegen?

Besten Dank für eure Hilfe!
lenherrg
\documentclass[a4paper,12pt]{article}
\usepackage[x11names]{xcolor} 
\usepackage{amsmath, cancel, siunitx, enumitem, array, rotating, nicefrac} 	
\usepackage{tikz}

\begin{document}
\begin{enumerate}[label={\alph*)}]
\itemsep10pt
\item Wie kann ich eine Vektorkette (rote Farbe) relativ zeichnen?\\[1mm]
(In der Darstellung unten fehlen mir die Pfeilspitzen des 1. und 2. Vektors.)
\item Wie kann ich machen, dass der resutierende Vektor (blaue Farbe) die volle Länge von Anfang bis Ende der Vektorkette hat?
\end{enumerate}
\vskip5ex

\begin{tikzpicture}
\draw [red, ->, >=latex]  (108mm, 52mm) node(A){} --++ (-150:100mm)--++ (-30:80mm)--++ (60:40mm) node(E){}; % Vektorkette
\draw[blue, ->, >=latex] (A) -- (E);   % resultierender Vektor
\end{tikzpicture}

\end{document}

Verfasst: Do 10. Jan 2019, 12:13
von Rolli
b) ist einfach: Ändere A in A.center und E in E.center.
a) geht meines Wissens nicht; also zeichne die Vektoren einzeln.
\documentclass[a4paper,12pt]{article}
\usepackage[x11names]{xcolor}
\usepackage{amsmath, cancel, siunitx, enumitem, array, rotating, nicefrac}    
\usepackage{tikz}

\begin{document}
\begin{enumerate}[label={\alph*)}]
\itemsep10pt
\item Wie kann ich eine Vektorkette (rote Farbe) relativ zeichnen?\\[1mm]
(In der Darstellung unten fehlen mir die Pfeilspitzen des 1. und 2. Vektors.)
\item Wie kann ich machen, dass der resutierende Vektor (blaue Farbe) die volle Länge von Anfang bis Ende der Vektorkette hat?
\end{enumerate}
\vskip5ex

\begin{tikzpicture}
\draw [red, ->, >=latex]  (108mm, 52mm) node(A){} --++ (-150:100mm)--++ (-30:80mm)--++ (60:40mm) node(E){}; % Vektorkette
\draw[blue, ->, >=latex] (A.center) -- (E.center);   % resultierender Vektor
\end{tikzpicture}

\end{document}
Gruß vom Rolli

Verfasst: Do 10. Jan 2019, 12:18
von lenherrg
Vielen Dank für den Tipp mit dem Zusatz "center".

Hoffentlich kann mir auch jemand zur Frage a) weiterhelfen.
Gibt es wirklich keine elegante Lösung?

Verfasst: Do 10. Jan 2019, 12:25
von markusv
Rolli hat geschrieben:b) ist einfach: Ändere A in A.center und E in E.center.
Würde lieber coordinate nutzen statt node, aber ist wahrscheinlich eher Geschmackssache als besser oder schlechter.
Zu ersterem kenne ich leider auch keine elegantere Lösung:
\documentclass[a4paper,12pt]{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[-latex,red]
\coordinate(A) at (108mm, 52mm);
\coordinate(B) at (-150:100mm);
\coordinate(C) at (-30:80mm);
\coordinate(D) at (60:40mm);
\draw (A) --++ (B) coordinate(B);%Pos. neu speichern unter B
\draw (B) --++ (C) coordinate(C);%s.o.
\draw (C) --++ (D) coordinate(D);%s.o.
\draw[blue] (A) -- (D);
\end{tikzpicture}
\end{document}
Man könnte die neuen Positionen auch unter anderem Namen speichern.

Verfasst: Do 10. Jan 2019, 12:25
von Rolli
Ich habe keine Idee. Das wäre ja so ähnlich, als würde man z.B. mitten im Pfad die Farbe wechseln wollen, also in einem Pfad Vektor 1 rot, Vektor 2 grün und Vektor 3 blau zeichnen wollen. Ist m.W. in TikZ nicht eingebaut.

Gruß vom Rolli

Verfasst: Do 10. Jan 2019, 14:59
von lenherrg
Hallo zusammen,

mit der Lösung von markusv mittels "coordinate" und der Speicherung der neuen Positon kann ich ganz gut leben bzw. arbeiten.

Vielen Dank für eure Inputs.
\draw (A) --++ (B) coordinate(B);%Pos. neu speichern unter B

Verfasst: Do 10. Jan 2019, 15:06
von esdd
Hier ist mal noch ein Vorschlag mit einer foreach Schleife:
\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[>=latex]
\coordinate(A) at (108mm, 52mm);

\foreach \p/\n  [remember=\n as \lastn (initially A)] in {%
    {-150:100mm}/B,%
    {-30:80mm}/C,%
    {60:40mm}/D%
  }{\draw[red,->] (\lastn)--+(\p)coordinate(\n);}
 
\draw[blue,->] (A) -- (D);
\end{tikzpicture}
\end{document}