Jump to content
  • Advertisement
Sign in to follow this  
Caesar

Physics of ball - magnus force

This topic is 3982 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I'm trying to simulate a soccer ball flight. I'd like to account for gravity and magnus force (I don't need to account for drag now). As far as I know, the Magnus force acts in a direction perpendicular to the direction of motion at every moment in time. Let's say there is only left/right spin on the ball generating the Magnus force. position += d * dt + cross(d, up) * some_appropriate_length; where d is the current direction vector, up is the up vector and some_appropriate_length is simply a length of the magnus force vector due to rpm and dt I believe. dt is the time step. Now, how would I go about a non-iterative function of time that would express the same stuff? The only idea I got was that since velocity is derivation of position and d * dt + cross(d, up) * some_appropriate_length; is my velocity, I could get the position by integrating (over dt I believe). The problem is I don't know how to integrate that cross product. I could try integrating the x, y, z separately, but then again I don't believe that would work (the values change, would I have to do a n-dimensional integral?). I'd also like to hear of any articles that also have some actual equations aside from principle discussion. I need that to be able to tell the rpm I need when I have an initial direction (velocity), a start point and a finish point (and don't take care of the altitude of the ball) (without using some kind of guessing, like bisection) thanks in advance

Share this post


Link to post
Share on other sites
Advertisement
Magnus force is a force. That means that you can't just add it to a position. The acceleration due to the magnus force is a = F/m (m is the mass of the ball and F is the magnus force. If the force is constant (it is not, but lets ignore that for now), then the change in position due to the force is ½adt2. The proper formula would then be
    position += d * dt + cross(d, up) * some_appropriate_length * dt * dt;
Now, there are other factors that affect the path of the ball. A major one is air resistance. The velocity of the ball in the direction of travel will decrease due to the force of the air resistance, which depends on the velocity. Another major factor is gravity. And finally, the spin of the ball (and thus the magnus force) is not constant.

Given all that, while it is probably possible to come up with a closed form for the path of the ball: position = f(something), it would probably involve a hairy differential equation that you are probably not willing to tackle. The alternative is to use numerical integration or use a physics library that will do the integration for you.

Share this post


Link to post
Share on other sites
My chapter in the book Game Programming Gems 5, titled "Back of the Envelope Aerodynamics for Game Physics," has a discussion of the generation of lift on spinning bluff bodies, which is a partial cause of the Magnus force (word is capitalized because it is named after a person). The chapter does present simple closed form formulas to compute an estimate to the force. There is also a very simple, quickly-written and imperfect sample application on the book's CD. You might find it useful.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!