|
Re: MAX ball shot trajectory
For launching 4.5 feet to 8.5 feet:
Please input the initial velocity in meters per second: 12.8
Please input the coefficient of drag (0.07 - 0.5): 0.416
The uber best range is 14.7775 meters at an uber angle of 47 degrees.
For more calculations refer to my
C++ Code:
#include <iostream.h>
#include <math.h>
int main()
{
// float i = cos(x); x is in radians
// float i = atan(x); i is in radians arctangent
float x;
float y;
float v_initial = 12.8;
float v_x;
float v_y;
float initial_angle;
float theta;
float drag;
float area = pow((3.5 * 2.54 / 100), 2) * 3.14159;
float mass = .206; //kilograms
float C_D; //Coefficient of Drag
float a_x;
float a_y;
float increment = .01; //Incrementing time
float best_range;
float rad_conv = 2.0 * 3.14159 / 360.0;
float uber_best_range = 0;
float uber_angle = 0;
cout << "This program will calculate the maximum range and best angle to launch a 7 inch diameter poof ball." << endl << endl;
cout << "Please input the initial velocity in meters per second: ";
cin >> v_initial;
cout << "Please input the coefficient of drag (0.07 - 0.5): ";
cin >> C_D;
for(initial_angle = 10; initial_angle <= 80; initial_angle = initial angle + .5)
{
x = 0;
y = 0;
v_x = v_initial * cos(initial_angle * rad_conv);
v_y = v_initial * sin(initial_angle* rad_conv);
best_range = 0;
do
{
theta = atan(v_y/v_x);
drag = .5 * C_D * area * sqrt(pow(v_x, 2) + pow(v_y, 2));
a_x = drag / mass * cos(theta);
a_y = drag / mass * sin(theta) + 9.8;
v_x = v_x - a_x * increment;
v_y = v_y - a_y * increment;
x = x + v_x * increment;
y = y + v_y * increment;
if(y > 1.3 && v_y < 0) //To change height difference, change the 1.3 (meters).
best_range = x;
}while(y >= 0);
cout << "At " << initial_angle << " degrees, the best range is " << best_range << " meters." << endl << endl;
if(best_range > uber_best_range)
{
uber_best_range = best_range;
uber_angle = initial_angle;
}
}
cout << "The uber best range is " << uber_best_range << " meters at an uber angle of " << uber_angle << " degrees.";
return 0;
}
|