1) A variant with fp :
\documentclass{article}
\usepackage{tikz,fp}
\FPmessagesfalse
\FPdebugfalse
\makeatletter
\tikzset{%
parabola through/.style={
to path={%
\pgfextra{%
\tikz@scan@one@point\pgfutil@firstofone(\tikztostart)\relax
\FPeval\xa{\pgf@sys@tonumber{\pgf@x}/28.45274}
\FPeval\ya{\pgf@sys@tonumber{\pgf@y}/28.45274}
\tikz@scan@one@point\pgfutil@firstofone#1\relax
\FPeval\xb{\pgf@sys@tonumber{\pgf@x}/28.45274}
\FPeval\yb{\pgf@sys@tonumber{\pgf@y}/28.45274}
\tikz@scan@one@point\pgfutil@firstofone(\tikztotarget)\relax
\FPeval\xc{\pgf@sys@tonumber{\pgf@x}/28.45274}
\FPeval\yc{\pgf@sys@tonumber{\pgf@y}/28.45274}
\FPeval\pb@a{(\ya*(\xb-\xc)+\yb*(\xc-\xa)+\yc*(\xa-\xb))/%
((\xa-\xb)*(\xa-\xc)*(\xb-\xc))}
\FPeval\pb@b{(\ya*(\xc+\xb)*(\xc-\xb)+\yb*(\xa+\xc)*(\xa-\xc)+\yc*(\xb+\xa)*(\xb-\xa))/((\xa-\xb)*(\xa-\xc)*(\xb-\xc))}
\FPeval\pb@c{(\ya*\xb*\xc*(\xb-\xc)+\yb*\xa*\xc*(\xc-\xa)+\yc*\xa*\xb*(\xa-\xb))/((\xa-\xb)*(\xa-\xc)*(\xb-\xc))}
\draw plot[domain=\xa:\xc] (\x,{\pb@a*(\x*\x)+\pb@b*\x+\pb@c}) ;
}(\tikztotarget)
}
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw [help lines] (-3,-1) grid (7,4);
\draw (-3,0) to[parabola through={(-2,2)}]%
(0,-1) to[parabola through={(2,4)}] (4,0) to[parabola through={(5,3)}] (7,0);
\end{tikzpicture}
\end{document}
2) From maeshtro's answer with gnuplot
\documentclass{article}
\usepackage{tikz}
\makeatletter
\tikzset{%
parabola through/.style={
to path={%
\pgfextra{%
\tikz@scan@one@point\pgfutil@firstofone(\tikztostart)\relax
\edef\xa{\pgf@sys@tonumber{\pgf@x}}
\edef\ya{\pgf@sys@tonumber{\pgf@y}}
\tikz@scan@one@point\pgfutil@firstofone#1\relax
\edef\xb{\pgf@sys@tonumber{\pgf@x}}
\edef\yb{\pgf@sys@tonumber{\pgf@y}}
\tikz@scan@one@point\pgfutil@firstofone(\tikztotarget)\relax
\edef\xc{\pgf@sys@tonumber{\pgf@x}}
\edef\yc{\pgf@sys@tonumber{\pgf@y}}
\draw plot[domain=\xa/28.45274:\xc/28.45274] function{
\ya/28.45274*((x*28.45274-\xb)*(x*28.45274-\xc))/((\xa-\xb)*(\xa-\xc))+
\yb/28.45274*((x*28.45274-\xa)*(x*28.45274-\xc))/((\xb-\xa)*(\xb-\xc))+
\yc/28.45274*((x*28.45274-\xa)*(x*28.45274-\xb))/((\xc-\xa)*(\xc-\xb))
};
}(\tikztotarget)
}
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw [help lines] (-3,-1) grid (7,4);
\draw (-3,0) to[parabola through={(-2,2)}] (0,-1) to[parabola through={(2,4)}] (4,0) to[parabola through={(5,3)}] (7,0);
\end{tikzpicture}
\end{document}
parabolapath option already? There are some examples on page 146 in the manual. What is the obstacle that prevents you to achieve what you want withparabola? – percusse Jan 13 '12 at 22:05parabolapath operation allows to draw the parabola passing through 3 given points only if one of them is the bend. I want a way to draw a parabola using three arbitrary TikZ coordinates. – maeshtro Jan 13 '12 at 22:47