Exercício 9 - Colisões
Neste exercício será necessário modificar o exemplo abaixo para a velocidade da bola aumentar em 1% a cada colisão e relacionar com o modelo de MRUV anteriormente trabalhado, discutindo a diferença de abordagem na solução.
A única alteração necessária seria esta:
A única alteração necessária seria esta:
if (bolaX >= width-10) { dX = -(dX+(0.01*dX)); dY = (dY+(0.01*dY)); } else if (bolaX<=0) { dX = -(dX+(0.01*dX)); dY = (dY+(0.01*dY)); } if (bolaY >=height-10) { dX = (dX+(0.01*dX)); dY = -(dY+(0.01*dY)); } else if (bolaY<=0) { dX = (dX+(0.01*dX)); dY = -(dY+(0.01*dY)); }
Sempre quando a bola colidir, acrescenta o dX com 0.01*dX e o dY com 0.01*dY.
Segue abaixo o código completo:
int r=20; int bolaX =0; int bolaY = 0; float dX = 5; float dY = 5; int dR= 1; void setup() { size(640, 480); } void draw() { background(0); fill(255); r = r+dR; println(dX, dY); if (r<= 10) { dR= -dR; } else if (r>=80) { dR= -dR; } ellipse(bolaX, bolaY, r*2, r*2); bolaX+= dX; bolaY+= dY; if (bolaX >= width-10) { dX = -(dX+(0.01*dX)); dY = (dY+(0.01*dY)); } else if (bolaX<=0) { dX = -(dX+(0.01*dX)); dY = (dY+(0.01*dY)); } if (bolaY >=height-10) { dX = (dX+(0.01*dX)); dY = -(dY+(0.01*dY)); } else if (bolaY<=0) { dX = (dX+(0.01*dX)); dY = -(dY+(0.01*dY)); } }
Relação com MRU e MRUV
Claramente nestes exercícios utilizamos MRU e MRUV. No primeiro exemplo há evidente apenas o MRU, pois a velocidade da bola é constante e não possui aceleração.Já no segundo exemplo, a bola ganha um pouco de "aceleração" ao colidir com a extremidade da tela, assim simulando um movimento de MRUV.
Nos exercícios anteriores utilizamos os conceitos de MRU e MRUV explicitamente, seguindo as equações exatamente como na Física. Neste exercício a utilização de MRU E MRUV vem em consequência dos algoritmos que utilizamos para que a bola se movimente.
Para trabalhar com MRU e MRUV não há a necessidade das formulas de equação e este exercício foi um exemplo disto.
Comentários
Postar um comentário