Mantendo o tempo real, explicar as alterações necessárias
para o simulador operar a 60 fps, tornando o modelo mais preciso e, consequentemente, a animação mais suave.
O código inicial fazia a bola se movimentar um quadro a cada um segundo, deixando seu rastro das posições anteriores.
int tAtual=0;
int vAtual= 10;
int dAtual;
void setup ()
{
frameRate(1);
size(600,600);
background(255);
mostraMundo();
}
void mostraMundo ()
{
for (int i=0; i<12; i++)
{
line(i*50,0,i*50,600);
line(0,i*50,600,i*50);
}
}
void draw()
{
dAtual= MRU(vAtual,tAtual);
println(tAtual, dAtual);
ellipse(dAtual,300,10,10);
tAtual++;
}
int MRU(int v, int t)
{
int d;
d=v*t;
return(d);
}
Tivemos que mudar tanto seu frameRate() de 1 para 60 e também criar uma nova variável para receber o novo valor de tempo, que será 1/60. Como o resultado dessa divisão dá número quebrado ela tem que ser float, implicando assim que todas as variáveis que se relacionem com ela também precisam ser alteradas para float. Então agora tAtual não é incrementado com +1 a cada loop, e sim com 1/60, dizendo assim que a cada 1 segundo 60 bolas serão desenhadas. Dando assim uma movimentação mais fluida e suave.
float tAtual=0;
float vAtual= 10;
float dAtual;
float tempo60fps=1.0/60.0;
void setup ()
{
frameRate(60);
size(600,600);
background(255);
mostraMundo();
}
void mostraMundo ()
{
for (int i=0; i<12; i++)
{
line(i*50,0,i*50,600);
line(0,i*50,600,i*50);
}
}
void draw()
{
dAtual= MRU(vAtual,tAtual);
println(tAtual, dAtual);
ellipse(dAtual,300,10,10);
tAtual=tAtual+tempo60fps;
}
float MRU(float v, float t)
{
float d;
d=v*t;
return(d);
}