[Tex/LaTex] How to specify the arrow length in TikZ

arrowstikz-pgf

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)$);
\shade[shading=ball, ball color=black!90] (3,1.5) circle (0.25em);

Arrows

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

Best Answer

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)$);
\shade[shading=ball, ball color=black!90] (3,1.5) circle (0.25em);
\end{tikzpicture}
\end{document}

The result:

enter image description here

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)$);
\shade[shading=ball, ball color=black!90] (3,1.5) circle (0.25em);
\end{tikzpicture}
\end{document}