Lab 6: Projectiles

advertisement
CS 282



Review of projectile physics
Examine gravity projectile model
Examine drag forces
◦ Simulate drag on a projectile

Examine wind forces
◦ Simulate wind affecting a projectile

Acceleration
◦ F = ma

Translational velocity and state
◦ dv/dt = a , ds/dt = v

Rotational acceleration
◦ torque = inertia * rotational_acceleration

Equations of motion are separated into directional
components

Let’s use Cartesian Coordinates for simplicity



Fx = 0
Fy = -mg
Fz = 0



vx = vx0
vy = vy0 –gt
vz = vz0



ax = 0
ay = –g
az = 0

Please sit next to your partner (if possible)

Download the framework code for today
◦ Available on the class website

Examine the projectile class
◦ Look at the gravity_model function
◦ !!!! Fill in the missing update y-position !!!!

Compile and run
◦ If necessary, WASD2X translates the camera (use at your
own risk though  )
◦ ENTER toggles the simulation ON/OFF

Hopefully, you have come up with something
like (without cheating) this…
◦ position.y + vy *dt+ 0.5*g*dt2


For this lab, let’s just assume there’s a golf
club (or something) is hitting that projectile 
So, Gravity-Only models are…
◦ Really easy to implement
◦ Feasible to analytically solve
◦ Really unrealistic looking

The only force on the projectile is gravity
◦ Only acts on the vertical (or the y) direction

The motion in the three directions is
independent.
◦ What happens in the y-direction , for example, does
not effect the x- or z-directions


The velocity in the x- and z-directions is
constant throughout the trajectory
The shape of the trajectory will always be a
parabola

What is drag?
◦ The resistance that air or any other type of gas
exerts on a body traveling through it.

Drag directly resists velocity
◦ X, Y, and Z velocities

Drag has two components
◦ Pressure drag: Caused by the differences in
pressure between the front and back of the object
◦ Skin drag: As the projectile is moving through
space, friction is created between it and the gas


The drag coefficient, Cd, is a scalar used to
evaluate drag force.
The shape of an object greatly affects how
much drag affects it.

Examine the projectile class
◦ You will notice a function called “drag_model”
 This is where you will drag will be implemented
◦ You will also notice several data members in the
class that are related to drag.

Part of the drag_model function should look
suspiciously familiar.
◦ Indeed, it is our favorite Runge-Kutta method!
 Or at least, a fragment of it…

The goal for this exercise is to finish the rest
of the Runge-Kutta approximation of drag.
◦ The first step of runge-kutta is provided for you

Here are some relevant equations:
◦ Fx = -Fd (vx/v)
◦ Fz =- Fd (vz/v)

Fy = -mg -Fd (vy/v)
The force due to drag is
◦ Fd = ½ p *v2 *A *Cd
◦ 0.5 * density * velocity2 * cross-area * drag coeff.

First , finish steps 2 through 4 of the RungeKutta procces
◦ Use step 1 and the equations as a reference


Be careful! Because we have more than one
velocity (as opposed to just x-velocity last
time), you will have k’s for each component
Don’t forget to average your k’s before you
add it to the velocity, and update your
position.



Drag force acts in the opposite direction to
the velocity. The magnitude of the drag force
is proportional to the square of the velocity
Drag causes the three components of motion
to become coupled (i.e x depends on y and z)
The drag force is a function of the projectile
geometry and is proportional to both the
frontal area and drag coefficient of the
projectile


The acceleration due to drag is inversely
proportional to the mass of the projectile.
Other things being equal, a heavier projectile
will show fewer drag effects than a lighter
projectile.
The drag on an object is proportional to the
density of the fluid in which it is traveling.




Now that we have drag, it will be relatively
easier to add wind into our simulation.
The presence of wind changes the apparent
velocity seen by a projectile
Tail-wind adds to
the velocity of the
object.
Head-wind
subtracts from the
velocity

Luckily for us, since we’ve implemented drag
already, it will be easy to add wind.
◦ You may have already noticed a function, as well as
parameters, hiding in the projectile class relating to
wind.

First of all, let’s keep all the work we did for
drag. Go ahead and copy paste the contents
of the function into the blank function
“drag_wind_model”



Now, all we have to do is subtract the wind’s
velocity components from each section of the
Runge-Kutta steps
Tail-winds will have negative velocity, thus
increasing our end velocity
The reverse for head-winds

Save your finished product somewhere.
◦ Perchance commit it to a repository?

You will be needing this for next week when
we add on…
◦ Spin
◦ Different shaped objects
◦ Mystery?

Plot the differences between the following
combinations on a graph (position vs. time)
◦
◦
◦
◦

Gravity only
Gravity and drag
Gravity and tail-wind
Gravity, head-wind, and drag
Not due next week, but you will be adding
more things to your simulation, so having
this done will lesson your workload next
week.
Download