|
|
|
![]() |
|
|||||||
|
||||||||
|
|
Thread Tools | Rate Thread | Display Modes |
|
#25
|
|||
|
|||
|
Re: Nerf ball starting at 12m/s 45 degree angle ending at 8ft 6in w/ air resistance
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. 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++) { 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) 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; } --Ownage |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|