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