//Inicializando variables locales
int i=0;
char ord[20];
//Obteniendo m xima resolución posible
xmax=getmaxx();
ymax=getmaxy();
//Creando ejes de coodernadas
line(20,0,20,ymax-20);//ejes de las x
line(20,ymax-20,xmax,ymax-20); //ejes de las y
for (i=1;i<=20;i++) //numerando ejes cartesianos
{
sprintf(ord,"%d",i*3);
outtextxy((i*30)+20,ymax-20,ord); //ejes x
outtextxy(5,ymax-(i*30)-20,ord); //ejes y
outtextxy(xmax-100,30,"Escala 1:10");
};
}
void ejes::cuadricula()
{
int i=0,j=0;
for (i=1;i<=34;i++)
{
line(20,(ymax-20)-(i*10),xmax,(ymax-20)-(i*10)); //filas
};
for (j=1;j<=65;j++)
{
line(20+(j*10),ymax-20,20+(j*10),120); //columnas
};
}
class parabola
{
public:void graftiro(float ang,float vel);
};
void parabola::graftiro(float ang, float vel) //ángulo y velocidad
{
//Inicializando variables para el cálculo
const g=9.8; //gravedad terrestre
double x=0,y=0,t=0,stop=1;
char ord[20];
for (t=1;stop!=0; t++)
{
//formulas para el movimiento vertical y horizontal
//en funcián del tiempo respectivamente
y=(vel*sin(ang*M_PI/180)*t/30)-(g*0.5*pow(t/30,2));
//g es la aceleración de la gravedad
x=(vel*cos(ang*M_PI/180)*t/30);
moveto(((x+20)),(ymax-20-y));
putpixel(getx(), gety(), getmaxcolor());
if (t<1000) //esto no puede durar mas de 10 segundos
{ //control de pausa por si la cosa se alarga
delay(10);
};
if (gety()>=ymax-20)
{
stop=0;
outtextxy(xmax-280,40,"Sumario");
sprintf(ord,"Tiempo %f segundos",t/30);
outtextxy(xmax-280,60,ord);
sprintf(ord,"Distancia %f metros",vel*cos(ang*M_PI/180)*t/30);
outtextxy(xmax-280,80,ord);
sprintf(ord,"Altura máxima %f metros",pow(vel*sin(ang*M_PI/180),2)/(2*g));
outtextxy(xmax-280,100,ord);
};
};
}
void main()
{
video objvideo; //instanciando objetos
ejes objejes;
parabola grafica;
objvideo.inicializar();
cout<<" Simulaci¢n de tiro parab¢lico"<<"\n";
cout<<" Desarrollado por Luis Alberto De Jesús"<<"\n";
cout<<" 19/11/07"<<"\n";
cout<<" Digite una opción para continuar";
char inf,inf1;
gotoxy(2,6);
cout<<"Cuadricular s/n ?"; //por si queremos cuadricular
inf1=getche();
double a,v;
inicio: //etiqueta de referencia
objejes.dibujar();
if ((inf1=='s')||(inf1=='S')) // si se eligio s cuadriculamos
{
objejes.cuadricula();
}
outtextxy(30,20,"Digite el ngulo de tiro: ");
gotoxy(30,2);cin>>a;
if ((a<0)||(a>90)) //control del angulo de tiro
{
cout.width(20);
cout<<"Entrada inv lida";
getche();
goto inicio; //si es menor que 0 o mayor de 90 ir a inicio
}
outtextxy(30,35,"Digite la velocidad de tiro en m/seg: ");
gotoxy(42,3);cin>>v;
grafica.graftiro(a,v);//grados y velocidad
outtextxy(30,50,"Desea terminar la simulación s/n? ");
gotoxy(40,4);
inf=getche();
if ((inf=='s')||(inf=='S')) //por si queremos repetir la simulación o terminar
{
goto fin;
}
else
{
goto inicio;
}
fin: //etiqueta de referencia
objvideo.finalizar(); //liberando la memoria
}
Veamos ahora el aspecto en pantalla

Presionamos s para ver la simulación en cuadrícula. Cualquier tecla por si no.

Digitamos un ángulo, por ejemplo 56

Pulsamos intro y digitamos una velocidad inicial, 65 por ejemplo y pulsamos intro.

Si digitamos s salimos del simulador y si presionamos cualquier tecla realizamos otra simulación.
Hasta otra próxima monografía.
Luís Alberto De Jesús
Santo Domingo República Dominicana.
23/11/2007
Página anterior | ![]() Volver al principio del trabajo | Página siguiente ![]() |
Ingrese el e-mail y contraseña con el que está registrado en Monografias.com
Trabajos relacionados
Ver mas trabajos de Programacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.
Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.