# How can I move an object in an “infinity” or “figure 8” 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
This should be the accepted answer. – S. Tarık Çetin Nov 23 '15 at 15:10

I randomly found another one using this formula:

-