//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

dataunix[arroba]hotmail.com

Santo Domingo República Dominicana.

23/11/2007



 Página anterior Volver al principio del trabajoPágina siguiente 

Comentarios

Agregar un comentario


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.