Fórmula del proyectil.
En el siguiente código, se muestra como calcular lo siguiente:
- Tiempo de altura máxima del proyectil.
- Altura máxima que alcanza el proyectil.
- Tiempo total en el aire del proyectil.
- Distancia máxima del proyectil al tocar con el piso.
- La velocidad en X del proyectil después de 1 segundo de haber sido lanzado.
- La velocidad en Y del proyectil después de 1 segundo de haber sido lanzado.
Además hemos hecho uso de una función para agarrar solo los dos primeros dígitos después del punto, y la se ha definido como "redondea".
#include <cstdlib>
#include <iostream>
#include <math.h> #include<iomanip> #include <stdio.h>
using namespace std;
double redondea(double value, int decimal_places)
{
double integer = 0,
fractional = 0,
output = 0;
int j = 0,
places = 1;
fractional = modf(value, &output);
for( int i = 0; i < decimal_places + 1; i++ )
{
fractional = modf(fractional, &integer);
for( j = 0; j < i; j++ )
{
places *= 10;
}
output += integer / places;
places = 1;
fractional *= 10;
}
return output;
}
int main()
{
float velocidad, angulo, distancia_max,vox,voy,tiempo_max,altura_maxima,tiempo_total,velocidad_x,velocidad_y;
cout << "DAME LA VELOCIDAD INICIAL DEL PROYECTIL: ";
cin >> velocidad;
while (velocidad <= 0)
{
cout << "DAME LA VELOCIDAD INICIAL DEL POYECTIL: ";
cin >> velocidad;
}
cout << "DAME EL ANGULO DE LANZAMIENTO DEL POYECTIL: ";
cin >> angulo;
while (angulo<=0 and angulo>360)
{
cout << "\nDAME EL ANGULO DE LANZAMIENTO DEL POYECTIL: ";
cin >> angulo;
}
// convirtiendo el angulo en radianes para despues sacar el angulo
vox = redondea((velocidad * cos((angulo*M_PI)/180)),2);
voy = redondea((velocidad * sin((angulo*M_PI)/180)),2);
//------------------------------------------------------------------------------
// Calculando el tiempo de altura máxima
tiempo_max = redondea((voy/9.8),2);
cout << "\nEL TIEMPO DE ALTURA MAXIMA DEL PROYECTIL ES :" << tiempo_max <<" s";
//------------------------------------------------------------------------------
// Calculando la altura maxima
altura_maxima = redondea((voy*tiempo_max) + (-9.8 * pow(tiempo_max,2)/2),2);
cout << "\nLA ALTURA MAXIMA QUE ALCANZA EL PROYECTIL ES :" << altura_maxima << " m";
//------------------------------------------------------------------------------
// Calculando el tiempo total del poyectil
tiempo_total = redondea((tiempo_max *2),2);
cout << "\nEL TIEMPO TOTAL EN EL AIRE DEL PROYECTIL ES :" << tiempo_total << " s";
//------------------------------------------------------------------------------
// Calculando la distancia maxima que llega al suelo
distancia_max = redondea((vox * tiempo_total ),2);
cout << "\nLA DISTANCIA MAXIMA AL SUELO DEL PROYECTIL ES :" << distancia_max << " m";
//------------------------------------------------------------------------------
// Calculando la velocidad en X y Y del proyectil después de 1 seg de haber sido disparado
velocidad_x = ((-9.8 * 1) + voy);
velocidad_y = vox;
cout << "\nLA VELOCIDAD EN X DEL PROYECTIL DESPUES DE UN 1(S) ES :" << velocidad_x << " m/s";
cout << "\nLA VELOCIDAD EN Y DEL PROYECTIL DESPUES DE UN 1(S) ES :" << velocidad_y << " m/s";
cout << "\n";
cin.get();
}
No hay comentarios:
Publicar un comentario