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

  • 2
    \$\begingroup\$ 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. \$\endgroup\$ – 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:

Lemniscate of Gerono animation

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:

Lemniscate of Bernoulli animation

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

  • \$\begingroup\$ Thank you, everybody, for your support, which has earned me my first gold badge here on gamedev! :-) \$\endgroup\$ – Ilmari Karonen Nov 13 '12 at 23:07
  • 1
    \$\begingroup\$ +1 for not only posting the links, but also the formulas and graphics ( with sources ). \$\endgroup\$ – rootlocus Nov 14 '12 at 7:54
  • 2
    \$\begingroup\$ As is, this should be the accepted answer. \$\endgroup\$ – 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:

half of an infinity symbol

  • \$\begingroup\$ 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. \$\endgroup\$ – DMGregory Dec 21 '17 at 14:11


half of an infinity symbol

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

  • 4
    \$\begingroup\$ 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. \$\endgroup\$ – DMGregory Jan 13 '18 at 23:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.