• Create Account

## 2D arc question

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.

7 replies to this topic

### #1FenrisWolf  Members

122
Like
Likes
Like

Posted 14 July 2001 - 09:00 AM

Hi. I''m terrible at physics, but recently I had a fairly nice idea about a game and I need physics to do it, so here it goes: I want to simulate a cannon (or something similar) that launches a bullet, and depending on the inicial velocity and the angle (the user chooses), it''ll fly in an arc-pattern and hit the ground. How can I do that? Code in Visual Basic or C/C++ is very appreciated! Thanks in advance "Nobody is perfect. I''''m a nobody. Therefore, I''''m perfect!" Nah, not really...

### #2Strife  Members

374
Like
Likes
Like

Posted 14 July 2001 - 10:49 AM

Well, here is a very simple way to implement this.

First, have two separate velocity components: xv for the horizontal velocity, and yv for the vertical velocity. Also add a constant to the mix, and call it g - this will be the acceleration of gravity (since the y-coordinate plane increases as it goes downwards on computer screens, make this a positive number).

Now, when a projectile flies through the air, the x velocity remains constant (assuming no air resistance/wind). Basically, every time you go through your main game loop, where you calculate new positions, do something like this:

yv = yv + g;

This updates the y velocity. To then update the positions, do something like this:

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

All that needs to be done to make this simulate a projectile is to give an object an initial velocity at some angle other than 90 degrees.

Got Slack?
Commander M

### #3FenrisWolf  Members

122
Like
Likes
Like

Posted 14 July 2001 - 11:01 AM

Thanks! I got what you said, but I still don''t understand how the arc would be relative to an angle. Sorry if I''m being too annoying

### #4Grudzio  Members

122
Like
Likes
Like

Posted 14 July 2001 - 12:24 PM

When you have initial velocity v0 and angle alpha, then velocity
along x axis is vx = v0*sin(alpha) and along y axis
vy = v0*cos(alpha)+g*t. Then as CmndrM says,

x = x + vx;
vy = vy + g;
y = y + vy;

The sign of g depends on orientation of y axis. If y values increase from bottom to top then g is negative. Otherwise g is positive.

### #5Strife  Members

374
Like
Likes
Like

Posted 14 July 2001 - 01:48 PM

Yeah, sorry, I forgot to mention the whole basic vector thing

Got Slack?
Commander M

### #6FenrisWolf  Members

122
Like
Likes
Like

Posted 16 July 2001 - 10:38 AM

Thank you so much! It works!

### #7Timkin  Members

864
Like
Likes
Like

Posted 16 July 2001 - 01:21 PM

quote:
Original post by Grudzio
When you have initial velocity v0 and angle alpha, then velocity
along x axis is vx = v0*sin(alpha) and along y axis
vy = v0*cos(alpha)+g*t. Then as CmndrM says,

x = x + vx;
vy = vy + g;
y = y + vy;

The sign of g depends on orientation of y axis. If y values increase from bottom to top then g is negative. Otherwise g is positive.

Obviously the alignment of an arbitrary coordinate system is itself arbitrary. However, going by your earlier post, one correction is required above:

vx = v0*cos(alpha)
vy = v0*sin(alpha)

are the correct equations for initial components of velocity given a speed of projectile v0 and angle of inclination alpha (measured from the ground up).

Cheers,

Timkin

### #8Grudzio  Members

122
Like
Likes
Like

Posted 17 July 2001 - 12:28 AM

Timkin is right. Sorry for my terrible mistake.

K.

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.