# Does a zero-length line with an arrow make sense? Is it a bug?

\documentclass[pstricks,border=12pt]{standalone}
\begin{document}
\multido{\i=0+30}{12}{%
\begin{pspicture}(-2,-2)(2,2)
\pscircle{1}
\pnode(1;\i){R}
\psset{arrows=->}
\psline(R)
\psline[linecolor=blue](R|0,0)
\psline[linecolor=red](0,0|R)
\psset{linecolor=gray,linestyle=dashed,linewidth=0.5\pslinewidth,arrows=-,dash=2pt 2pt}
\psline(R)(R|0,0)
\psline(R)(0,0|R)
\end{pspicture}}
\end{document}


Does a zero-length line with an arrow make sense? Is it a bug? I hope it is a bug. If it is not a bug, what is the best way to handle this case using a conditional macro in either TeX or PS level?

Apparently, this feature is also adopted by TikZ.

\documentclass[tikz,border=0pt]{standalone}
\usepackage{tikz}
\begin{document}
\tikzpicture
\fill[yellow] (-1,-1) -- (-1,1) -- (1,1) -- (1,-1) -- cycle;
\draw[->] (0,0)--(0,0);
\endtikzpicture
\end{document}

-
Add an epsilon perturbation so that direction is properly defined. – Aditya Sep 5 '12 at 4:33
why should this be a bug? If the user defines an arrow then it is drawn. – Herbert Sep 5 '12 at 11:54
@Herbert: Because it does not make sense. It will be better if the PSTricks core automatically does nothing for zero-length lines. – Click Me Sep 5 '12 at 11:58
that has the user to be decide if it makes sense or not ... – Herbert Sep 5 '12 at 12:13
@Herbert: If the line length with an arrow is measured from the tip of the arrow to the tail of the line then a zero-length line should be invisible. :-) – Click Me Sep 5 '12 at 12:15

A possible workaround ...

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node,multido}
\makeatletter
\def\psLine{\pst@object{psLine}}% a special Line
\def\psLine@i{\pst@getarrows{\begin@OpenObj \pst@getcoors[\psLine@ii}}
\def\psLine@ii{%
\ifPst@noCurrentPoint\else\pst@cp\fi    % current point?
4 copy Pyth2 \psk@arrowlength ge
{ \psline@iii \tx@Line }% arc and lineto type
{ pop pop pop pop } ifelse }%
\end@OpenObj}
\makeatother

\begin{document}
\multido{\i=0+30}{12}{%
\begin{pspicture}(-2,-2)(2,2)
\pscircle{1}
\pnode(1;\i){R}
\psset{arrows=->}
\psLine(0,0)(R)% needs always two pairs of coordinate
\psLine[linecolor=blue](0,0)(R|0,0)
\psLine[linecolor=red](0,0)(0,0|R)
\psset{linecolor=gray,linestyle=dashed,linewidth=0.5\pslinewidth,arrows=-,dash=2pt 2pt}
\psLine(R)(R|0,0)
\psLine(R)(0,0|R)
\end{pspicture}}
\end{document}


-
 Is there another simpler, high level (as opposed to the low level with PSTricks core macro) workaround that I can digest and adopt for my future projects? – Click Me Sep 5 '12 at 13:01 yes, the coordinates are read on TeX level. But it will not be simpler. TeX arithmetic is always a pain – Herbert Sep 5 '12 at 13:05