Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Don't forget to read Tuesday's email newsletter for your chance to win a free copy of Construct 2!


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.

  • You cannot reply to this topic
7 replies to this topic

#1 FenrisWolf   Members   -  Reputation: 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...

Sponsor:

#2 Strife   Members   -  Reputation: 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

#3 FenrisWolf   Members   -  Reputation: 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

#4 Grudzio   Members   -  Reputation: 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.



#5 Strife   Members   -  Reputation: 374

Like
Likes
Like

Posted 14 July 2001 - 01:48 PM

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

Vectors are your friend.


Got Slack?
Commander M

#6 FenrisWolf   Members   -  Reputation: 122

Like
Likes
Like

Posted 16 July 2001 - 10:38 AM

Thank you so much! It works!

#7 Timkin   Members   -  Reputation: 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

#8 Grudzio   Members   -  Reputation: 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.



PARTNERS