• Create Account

## Projectile

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

4 replies to this topic

### #1Warichew  Members

122
Like
Likes
Like

Posted 11 August 2001 - 04:52 AM

Hi! Im working on a small worms clone and what i need is a formula that calculates the way of a bullet in air... need to draw its path through air... My different variables are: Power: 0 - 100 Angle: 0 - 180 Does any of you have any examples or references? Thanks. -Robert-

### #2Strife  Members

374
Like
Likes
Like

Posted 11 August 2001 - 07:08 AM

Well, this is a pretty simple generalization of projectile motion, but here goes:

Basically, we''re talking 2-Dimensional motion. One motion in the y direction, and another in the x. Assuming there is no wind or air resistence, the x velocity shall remain constant throughout. However, because of gravity, the y velocity will constantly increase in the negative y direction.

Basically, you give your yv (y velocity) some initial positive value, and set g (gravitational acceleration) to whatever arbitrary value you want. To calculate the new yv, you would simply do this:

yv = yv + g;

To update the positions:

y = y + yv;
x = x + xv;

I hope this helped a little.

Free Speech, Free Sklyarov
Fight the unconstitutional DMCA.

Commander M

### #3NickW  Members

321
Like
Likes
Like

Posted 11 August 2001 - 07:42 AM

Okay, let''s asume that your "power" unit creates a velocity of 1 unit per second.

If you are working in a 2-D plane, your 2 initial velocity components are going to be like this:

ViX = Power * cos(Angle)
ViY = Power * sin(Angle)

Then, you just use the simple projectile motion formulas from calc:

X = X + (ViX * time)
Y = Y + (ViY * time) + (.5 * Gravity) * (time * time)

### #4Warichew  Members

122
Like
Likes
Like

Posted 12 August 2001 - 01:54 AM

Ok!

I can get it to fire a ''*'' through the air but the projectile just starts moving downwards as soon it leaves its start position. Well it should be moving upwards a while and then start to move down... or....

*What should i have as my gravity? Tried with .6.
*Should i use ordinary angles or radians, if radians how do i calculate it?
*What about time? Should i increase it with, say +.6 every frame or more?

-Robert-

### #5Dobbs  Members

164
Like
Likes
Like

Posted 12 August 2001 - 05:10 AM

The c++ trig functions expect radians, not degrees. To convert angle theta into radians:

radians = theta * PI / 180;

I would make that into a macro since you''ll probably find it more intuitive to work with angles than radians. And precalculate PI / 180 for an easy optimization.

Remember that on a computer Y coordinates generally increase towards the bottom of the screen. That may be causing your projectile problem. And btw on earth g == -9.8

If you''re going to add a specific amount to the time every frame it should be a lot smaller than 0.6 seconds, or your projectiles are going to move like lightning. Some other ways to update the time are to actually calculate the time elapsed between frames and use that amount, or have your program time itself and only update the physics after a specific period of time, maybe every 0.1 seconds

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.