# Eight or infinity sign trajectory

When I want to move object around point I do:

    point.x *= cosf(timer.timeElapsed);
point.y *= sinf(timer.timeElapsed);


How to make point move on eight or infinity sign trajectory?

-

As Marton notes, there are several "figure of eight" curves that might fit your needs. Perhaps the simplest is the lemniscate of Gerono, which has the parametrization:

x = cos(t);
y = sin(2*t) / 2;


and looks like this:

However, the lemniscate of Bernoulli may be visually more pleasing; it has a parametrization very similar to the lemniscate of Gerono, except that both axes are scaled by a factor of 1/(sin(t)^2 + 1) = 2/(3 - cos(2*t)):

scale = 2 / (3 - cos(2*t));
x = scale * cos(t);
y = scale * sin(2*t) / 2;


It looks like this:

(Animations made with Maple 13, compressed with GIFsicle.)

-
+1 for the excellent demonstration. –  Marton Nov 13 '12 at 14:47
Thank you, everybody, for your support, which has earned me my first gold badge here on gamedev! :-) –  Ilmari Karonen Nov 13 '12 at 23:07
+1 for not only posting the links, but also the formulas and graphics ( with sources ). –  rootlocus Nov 14 '12 at 7:54