PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [tikz] Eigendefiniton von Pfeilspitzen



johansjohe
12-08-2011, 21:58
Hallo zusammen,

ich hab mir mit dem folgenden Code eine Pfeilspitze in tikz definiert.


\documentclass{minimal}

\usepackage{tikz}

%----------meine Pfeilspitze-----------
\pgfarrowsdeclare{myarrow}{myarrow}{...} {
\pgfsetdash{}{0pt} % do not dash
\pgfsetroundjoin % fix join
\pgfsetroundcap % fix cap
\pgfpathmoveto{\pgfpointxyz{0}{0}{0}}
\pgfpathlineto{\pgfpointpolar{165}{5pt}}
\pgfpathlineto{\pgfpointpolar{195}{5pt}} \pgfpathclose
\pgfusepathqfillstroke }

\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{1mm}

\begin{document}

\begin{tikzpicture}
\draw[-myarrow, semithick] (0,0) -- (3,0);
\draw[-myarrow, semithick] (0,0) -- (1,2);
\end{tikzpicture}

\end{document}


Das klappt auch alles super, sofern die Pfeile im Ursprung beginnen, wie es nach der Definition \pgfpathmoveto{\pgfpointxyz{0}{0}{0}} sein soll. Ich möchte die Pfeilspitzen gern auch für beliebige Vektoren im Raum verwenden. Ich hab jedoch noch keine Lösung dafür gefunden. Weiß jemand wie man den Befehl \pgfpointxyz umschreiben muss?

Gruß Johannes

rais
13-08-2011, 11:20
Moin moin,
ich glaube, Du musst auch definieren, wie weit Deine Pfeilspitze übersteht, siehe dazu ``The left and right extend'' im pgfmanual.
Als Beispiel


\documentclass{minimal}

\usepackage{tikz}
\newlength\mysize
%----------meine Pfeilspitze-----------
\pgfarrowsdeclare{myarrow}{myarrow}{%
\mysize=5pt
\advance\mysize by 0.5\pgflinewidth
\pgfarrowsleftextend{+-\mysize}
\pgfarrowsrightextend{+0.5\pgflinewidth}
}{%
\mysize=5pt
\advance\mysize by 0.5\pgflinewidth
\pgfsetdash{}{0pt} % do not dash
\pgfsetroundjoin % fix join
\pgfsetroundcap % fix cap
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfqpoint{+-\mysize}{+0.25\mysize}}
\pgfpathlineto{\pgfqpoint{+-\mysize}{+-0.25\mysize}}
\pgfpathclose
\pgfusepathqfillstroke
}

\begin{document}

\begin{tikzpicture}
\draw[-myarrow, semithick] (0,0) -- (3,0);
\draw[-myarrow, semithick] (0,0) -- (1,2);
\draw[red, very thick,-myarrow] (1,2) -- (3,2);
\draw[blue,myarrow-myarrow] (3,2) -- (3,0);
\end{tikzpicture}

\end{document}

MfG

johansjohe
13-08-2011, 12:39
Besten Dank Rainer,

da hab ich wohl nicht genau genug gelesen. Auf der Seite auf die du hingewiesen hast, steht auch der Code für die Pfeilspitze in leicht abgewandelter Form. Vielen Dank für den Hinweis, ich gelobe mich zu bessern.

Und vor allem besten Dank für die fertige Lösung.

Johannes