Para analisar o lançamento oblíquo é necessário considerá-lo como resultante de outros dois movimentos, um MRU na Horizontal e um MRUV na Vertical.
Na simulação realizada são fornecidos dois valores, o ângulo e velocidade inicial . Através destes valores é possível calcular a velocidade inicial dos dois movimento, que pode ser encontrada através das equações abaixo:
v0X = v0 * cos(angulo) e v0Y = v0 * sin(angulo);
Abaixo está o código implementado:
int relogio; int intervalo=100; //Váriaveis do Projétil float dVert =height-1; float dHoriz =1; float angulo = 60; float v0 = 100; float v0X; float v0Y; float t = 0; float a = -9.8; //Variáveis do Alvo float posXRect = 420; float posYRect = 310; float largRect = 50; float altRect = 50; void setup(){ relogio=millis(); size(700,700); //Cálculo da velocidade inicial nas direções //horizontal e vertical v0X = cos(radians(angulo)) * v0; v0Y = sin(radians(angulo)) * v0; } void draw(){ if (millis() > relogio+intervalo){ relogio=millis(); lancBalist(); t=t+0.1; } } void lancBalist(){ dHoriz = v0X * t; //deslocamento horizontal(MRU) dVert = (v0Y * t) + a*(t*t)/2;//deslocamento Vertical(MRUV) background(255); desenhaGrade(); mostraInfo(); ellipse(dHoriz, height-dVert, 25, 25); //teste colisão sentido horizontal if((dHoriz+12.5 >= posXRect) && (dHoriz-12.5<=posXRect+largRect)){ //teste colisão sentido vertical if((height-dVert >= posYRect) && (height-dVert<=posYRect + altRect) ){ text("Colidiu",320, 310);
fill(255, 0, 0);
} } } void desenhaGrade(){ for(int i = 0; i<=width; i+=100){ text(height-i,0, i-5); text(i,i+5, height); line(i, 0, i, height); line(0, i, width, i); } rect(posXRect, posYRect , largRect, altRect); } void mostraInfo(){ textSize(10); fill(0); text("Deslocamento Vertical:" + dVert + "\nDeslocamento Horizontal: "+ dHoriz+ "\nVelocidade Vertical:" + (v0Y + a * t) + "\nVelocidade Horizontal: "+ v0X + "\nTempo: "+ t , width/2+10,20); }
Nenhum comentário:
Postar um comentário