# How to specify the arrow length in TikZ?

I've a small problem in Tikz. I try to draw arrows within 4 dimensions. Every arrow should have equal length. My implementation right now works with coordinates. There is a rectangle with a center point and in each direction a point at the edge. I'd like to draw an arrow from the center in each direction with the same size. Right now I draw between the center and this construct: ($(center)!0.5!(borderpoint)$). The problem with that is, it differs between the short an width edges but I'd like to have the same length in every direction.

Example:

\draw[thick] (0,0) -- (6,0) -- (6,3) -- (0, 3) -- cycle;
\draw[->, thick] (3,1.5) -- ($(3,1.5)!0.5!(0,1.5)$);
\draw[->, thick] (3,1.5) -- ($(3,1.5)!0.5!(6,1.5)$);
\draw[->, thick] (3,1.5) -- ($(3,1.5)!0.5!(3,3)$);
\draw[->, thick] (3,1.5) -- ($(3,1.5)!0.5!(3,0)$);


I wish to: draw an arrow from Startpoint in direction of DestPoint for an length of X. :))

-
Related Question: Specify the length of the arrow in TikZ. – Peter Grill Oct 7 '14 at 20:05

You can specify which is the length of the arrow in this way:

\draw[->, thick] (3,1.5) -- ($(3,1.5)!1cm!(0,1.5)$);


where the length is 1cm.

Here is the revised example:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\draw[thick] (0,0) -- (6,0) -- (6,3) -- (0, 3) -- cycle;
\draw[->, thick] (3,1.5) -- ($(3,1.5)!1cm!(0,1.5)$);
\draw[->, thick] (3,1.5) -- ($(3,1.5)!1cm!(6,1.5)$);
\draw[->, thick] (3,1.5) -- ($(3,1.5)!1cm!(3,3)$);
\draw[->, thick] (3,1.5) -- ($(3,1.5)!1cm!(3,0)$);
\end{tikzpicture}
\end{document}


The result:

You can find more information on the calc library on the documentation (13.5 Coordinate Calculations, pgfmanual version October 25, 2010).

A quickest implementation:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newlength\arrowlength
\setlength{\arrowlength}{1cm}
\begin{document}
\begin{tikzpicture}
\draw[thick] (0,0) -- (6,0) -- (6,3) -- (0, 3) -- cycle;
\foreach \destination in
{{0,1.5},{6,1.5},{3,3},{3,0}}
\draw[->, thick] (3,1.5) -- ($(3,1.5)!\arrowlength!(\destination)$);

No, you should use \pgfmathsetlength{\arrowlength}{1cm}; in the quickest implementation you can absolutely substitute \setlength{\arrowlength}{1cm}  with \pgfmathsetlength{\arrowlength}{1cm} without problems. – Claudio Fiandrino Oct 11 '12 at 9:18