Go to Post If we all keep our "secrets" about our robots, the rest of us don't learn as much. - Rick TYler [more]
Home
Go Back   Chief Delphi > Technical > Technical Discussion
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #25   Spotlight this post!  
Unread 12-01-2006, 19:49
racsan12345 racsan12345 is offline
Registered User
FRC #1351
 
Join Date: Jan 2006
Location: San Jose
Posts: 3
racsan12345 is an unknown quantity at this point
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
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 02:54.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi