240 likes | 353 Vues
This lab focuses on projectile physics, covering the fundamental concepts of gravity, drag forces, and wind effects on projectile motion. Students will simulate a gravity-only projectile model initially, then explore the influence of aerodynamic drag, which opposes the motion and couples the motion components. Finally, the lab introduces how wind modifies projectile trajectories. By engaging in hands-on coding exercises, students will gain practical experience in simulating these forces using a provided framework, enhancing their understanding of motion dynamics in three dimensions.
E N D
Lab 6: Projectiles CS 282
Overview • Review of projectile physics • Examine gravity projectile model • Examine drag forces • Simulate drag on a projectile • Examine wind forces • Simulate wind affecting a projectile
General Concepts • 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
Reference Frame • Let’s use Cartesian Coordinates for simplicity
Gravity-Only Projectile Model • Fx = 0 • Fy = -mg • Fz = 0 • vx = vx0 • vy = vy0 –gt • vz=vz0 • ax = 0 • ay = –g • az= 0
Exercise 1: Setting Up • 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
Exercise 1: Setting Up • 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
Summary: Gravity-only model • 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
Aerodynamic Drag • 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: Overview • 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
Drag Coefficient • The drag coefficient, Cd, is a scalar used to evaluate drag force. • The shape of an object greatly affects how much drag affects it.
Exercise 2: Implementing Drag • 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…
Exercise 2: Implementing Drag • 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) Fy = -mg -Fd (vy/v) • Fz =- Fd (vz/v) • The force due to drag is • Fd = ½ p *v2 *A *Cd • 0.5 * density * velocity2 * cross-area * drag coeff.
Exercise 2: Implementing Drag • First , finish steps 2 through 4 of the Runge-Kuttaprocces • 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.
Summary: Aerodynamic Drag • 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.ex 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
Summary: Drag (end) • 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.
Getting Windy? • 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
Exercise 3: Wind • 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”
Exercise 3: Wind • 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
That’s all Folks! • 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?
(kind of) For next week… • 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.