\catcode`@=11%
%
% checks if a point is defined
\def\ifVDDdef@ined#1\then{%
  \expandafter\expandafter\expandafter\ifx\VDDx{#1}\relax
    \VDD@testfalse
  \else
    \VDD@testtrue
  \fi
  \ifVDD@test
}%
\def\VDDdef@cartesian#1(#2,#3)#4 {%
  \ifx\end#4\end % no cartesian coordinates given
  \else
    \expandafter\expandafter\expandafter\edef\VDDx{#1}{#2}%
    \expandafter\expandafter\expandafter\edef\VDDy{#1}{#3}%
  \fi
}%
\def\VDDdef@polar#1(#2;#3)#4 {%
  \ifx\end#4\end % no polar coordinates given
  \else
    \VDDcdirvecangle@#1:#3:
    \VDDcscale@#1:#1:#2
    %\message{def #1(#2;#3)}%
  \fi
}%
\def\VDDdef@not#1(#2){%
  \ifx\end#2\end % no coordinates available, check defined
    \ifVDDdef@ined{#1}\then
      \errmessage{point #1 is defined while it should not be}%
    \else
      \edef\VDDdef@defined{\VDDdef@defined#1&}%
      %\message{point #1 is undefined}%
    \fi
  \else
    \ifVDDdef@ined{#1}\then
      \errmessage{attempt to redefine #1 while it should not be defined}%
    \else
      \errmessage{attempt to define #1 while it should not be defined}%
    \fi
  \fi  
}%
\def\VDDdef@dontcare#1(#2){%
}%
\def\VDDdef@#1(#2){%
  %\message{VDDdef@ got 1=#1<- 2=#2<-}%
  \ifx\end#2\end % no coordinates available, check defined
    \ifVDDdef@ined{#1}\then
      %\message{#1 previously defined}%
    \else
      \errmessage{point #1 is undefined, you should define it}%
    \fi
  \else
    \ifVDDdef@ined{#1}\then
      \errmessage{attempt to redefine #1}%
    \else
      \edef\VDDdef@defined{\VDDdef@defined#1&}%
      \VDDdef@cartesian#1(#2)(,) 
      \VDDdef@polar#1(#2)(;) 
    \fi
  \fi
}%
\def\VDDundef@#1(#2){%
  \ifx\end#2\end
  \else
    \errmessage{attemt to redefine #1, not possible in VDDundef}%
  \fi
  %\message{VDDundef@ got 1=#1<- 2=#2<-}%
  %\message{\VDDdef@defined}%
  %\gdef\VDDdef@hide#1{1}%
  \expandafter\let\csname VDD@#1x\endcsname\relax
}%
\def\VDDdef#1 {%
  \VDDparse@\VDDdef@\VDDparse@tmp #1
}%
\def\VDDundef#1 {%
  \VDDparse@\VDDundef@\VDDparse@tmp #1
}%
\def\VDDdeflineangle@#1:#2:#3: {%
  \VDDcopy@#1p&:#2&
  \VDDcdirvecangle@#1d:#3:
}%
\def\VDDdeflinepoint@#1:#2&#3&#4 {%
  %\message{about to sub}%
  \VDDcsub@ #1d:#3&#2&
  %\message{about to copy}%
  \VDDcopy@ #1p&:#2&
}%
\def\VDDdeflinepoint#1:#2 {%
  \edef\VDDparse@tmp{#1:}%
  %\message{bla1 \VDDparse@tmp}%
  \VDDparse@letter\VDDdef@\VDDparse@tmp#2
  %\message{bla2 \VDDparse@tmp}%
  \expandafter\VDDdeflinepoint@\VDDparse@tmp&
}%
\catcode`@=12%
