TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

Verwandt mit: https://texwelt.de/wissen/fragen/22338/tikz-feinschliff-einer-pfeilspitze


Ich möchte ein Kommando erstellen, dass es erlaubt einen single arrow aus der shapes-Bibliothek zwischen zwei Koordinaten, etwa A und B, zu zeichnen.

Dazu habe ich Winkel und Abstand der Koordinaten berechnet.

Der Winkel ist schonmal der richtige, die Länge des Pfeils scheint nahezu die Richtige zu sein. Aber mit der Position des Pfeils stimmt etwas nicht.

alt text

Öffne in Overleaf
\documentclass[margin=5mm]{standalone}

\usepackage{amsmath, amssymb}

\usepackage{tikz}
 \usetikzlibrary{shapes}

\begin{document}

\tikzset{Pfeil/.style={
single arrow, draw, 
minimum width=5ex, 
%minimum height=13ex, 
inner sep=1ex,
%text height=1ex,
%text depth=0ex,
single arrow head extend=1ex
}}

\begin{tikzpicture}

\coordinate (A) at (0,0);
\coordinate (B) at (2,2);
% ...

\path (A);
\pgfgetlastxy{\Ax}{\Ay} 
\path (B);
\pgfgetlastxy{\Bx}{\By}

%\pgfmathsetmacro{\Length}{veclen(\Ax,\By)}
\pgfmathsetmacro{\Length}{sqrt((\By-\Ay)^2+(\Bx-\Ax)^2)}
\pgfmathsetmacro{\Angle}{atan((\By-\Ay)/(\Bx-\Ax))}

\path[] (A)  node[
Pfeil, 
rotate=\Angle, 
xshift=1*0.5*\Bx, 
yshift=0*0.5*\By, 
minimum height=1.0*\Length, 
%minimum width=1.0*\Bx, 
]  {};

% Kontrolle
\draw[red] (A) -- (B) ;
\node[red] at (0,5) {\Ax, \Ay, \Bx, \By, \Angle, \Length};
\end{tikzpicture}

\end{document}

gefragt 04 Jul '18, 19:59

cis's gravatar image

cis
9.3k23217385
Akzeptiert-Rate: 29%

bearbeitet 05 Jul '18, 14:16

Das erste sein, diese Frage zu beantworten!
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×677
×3

gestellte Frage: 04 Jul '18, 19:59

Frage wurde gesehen: 1,832 Mal

zuletzt geändert: 08 Jul '18, 16:39