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?

Some possibilities:

Lemniscate of Bernoulli

Lemniscate of Gerono

Lemniscate of Booth

Watt's curve

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

• Answers should be self-contained, external links may die some day and would render this answer useless. You should quote the important bits from the links you've provided. – Brian H. Dec 21 '17 at 10:09

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.)

• 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
• As is, this should be the accepted answer. – Brian H. Dec 21 '17 at 10:09

I randomly found another one using this formula:

$$x^2 = y^2 + 0.1x^{2.8}$$

As plotted by Wolfram Alpha:

• Unlike the other answers, this one is currently not presented in parametric form that lets us easily step the position forward over time t. I'd recommend including a description of how you would use this formula to position a moving object over time. – DMGregory Dec 21 '17 at 14:11

The product of the distances from any point on that curve to (-1, 0) and to (1,0) is constant and equals to 1.

• This answer provides a formula modelling such a curve, but not a method to "move an object" in such a way that it follows that curve. Please consider elaborating on the answer to indicate how you would use this math to move an object in a game. – DMGregory Jan 13 '18 at 23:30