CS 282. Last week we dealt with projectile physics ◦ Examined the gravity-only model ◦ Coded...

14
Lab 7: Projectile Effects 2 CS 282

Transcript of CS 282. Last week we dealt with projectile physics ◦ Examined the gravity-only model ◦ Coded...

Lab 7: Projectile Effects 2

CS 282

Last week we dealt with projectile physics◦ Examined the gravity-only model◦ Coded drag affecting projectiles

Used Runge-Kutta for approximating integration◦ Coded wind effect

This week we will add the last effect…

Review from last week

SPIN!

First of all, open up a completed version of last week’s lab◦ If neither you nor your partner have it, you will

have to code it again. Refer to last week’s instructions.

So that we have a common starting ground, set the parameters for the following…◦ Initial position: (0.0, 0.0, 0.0) ◦ Initial Velocity: (15.0, 20.0, 1.0)◦ Drag Coefficient: 0.05 Mass: 10.0 Radius: 1.2◦ Wind Velocity: (5.0, 2.0, 0.0)

Exercise: Setting Up

Compile it and run the following scenarios◦ IMPORTANT: Limit your simulations by either time (i.e. 5

seconds) or by position (when y position is at 0) Gravity-only model Gravity and Drag Model Gravity, Drag, and Wind Model

Start outputting the magnitude of the velocity to the screen for each model◦ sqrt (vx

2 + vy2 + vz

2)

Capture these outputs in separate files◦ Use > on the command-line

Exercise: Setting Up

Spin is a very common occurrence when dealing with projectile physics.◦ A bullet leaving a gun will have spin◦ A golf ball will also have spin when hit by the club

Spinning objects generate force

Spin effects

First of all, a spinning object generates lift◦ This is called the Magnus effect (also known as

Robin’s effect)◦ The direction of the force will be perpendicular to

the velocity and spin direction If the object has backspin…

◦ Then the Magnus force will be positive in the vertical direction, propelling the object upwards

On the other hand, if the object has topspin…◦ The resulting force will be in the opposite

direction, thus pushing the object down

How does spin affect projectiles?

Here we can see all the forces interacting with our ball (minus the wind)

Glossary:◦ CL (lift coefficient)◦ p (fluid density)

Greek letter rho◦ v (velocity magnitude)◦ A (characteristic area)◦ R (spin axis vector)◦ w (rotation velocity)

Greek letter omega

Example of the forces

We need to create some variables in our class◦ We will need the following doubles…

Spin axis components: X-axis rotation, Y-axis rotation, Z-axis rotation

Angular/Rotational velocity (omega)◦ And some way of setting/initializing them

You can either have them be public and manually set them, or create get/set functions (better)

Create a spin_wind_drag function◦ It will need to take delta time as a parameter◦ HINT: We will be using Runge-Kutta

Exercise: Adding Spin

For a sphere, the force FM is defined as…◦ FM = ½ CL* p * v2 * A

For p and A, you can just use the values calculated in the main driver function

◦ CL = (radius * rotational velocity) / v

Solve the following in terms of acceleration (remember F = ma) and add them to their corresponding acceleration components.◦ FMx = - (vy/v) * Ry * FM

◦ FMy = - (vx/v) * Rz * FM

◦ FMz = 0 Because we will rotate the sphere along the Z-axis, this

component will be 0 (e.g. 0,0,1 for the spin axis vector)

Exercise: Adding Spin

Hopefully, you have now added the acceleration components to each step of Runge-Kutta.

Be sure to add your k’s appropriately to the new accelerations you added.

Let’s set the spin axis to 0,0,1

Add the appropriate line of code to the driver

Compile and run

Exercise: Adding Spin

What if our spin axis is on a multiple axes?◦ Let’s get the general form of the Magnus force

FMx = ((vz / v) * Ry – (vy / v) *Rz) * FM

FMy = ((vx / v) * Rz – (vz / v) *Rx) * FM

FMz = - ((vx / v) * Ry – (vy / v) *Rx) * FM

Use these forces to get your acceleration now instead of the old forces.

Compile and run the with a spin axis of◦ (0.5 ,0.5, 0.0)

Exercise: General Spin Axes

Use a spin axis of (0.75, 1.0, 0.0)◦ Default values on the rest

If you have completed the first exercise, you already have your data for the first three models.

Collect the data for the drag_wind_spin

Exercise: Comparison

Plot a graph showing the differences velocity magnitude vs. time of all four models.◦ Bonus point(s) for the models not explicitly mentioned

If you wish to use a constant delta time (instead of a timer), you may do so by replacing the measure_reset call with a flat value (i.e. 0.5)

Due next week