"explicar as alterações necessárias no código para
que o simulador possa considerar intervalos
menores que um segundo, sendo executado a
60 fps e ainda mantendo o tempo real"
![]() |
Uma simples animação do Sonic, assim como toda animação, possui uma quantidade específica de quadros por segundo (FPS). O número de FPS define a fluidez da animação. A primeira possui FPS inferior a segunda, parecendo mais endurecida. Para uma melhor visualização desse efeito, assista esse vídeo: Diferencia FPS Frames por Segundo.
A solução do problema é bem simples, e requer apenas três passos.
Primeira alteração que deve ser feita é nas variáveis globais. Teremos que utilizar variáveis do tipo float, por conta da segunda alteração que faremos no código.
Por termos trocado o número de ciclos por segundo do Processing de 1 ciclo/segundo (1 fps) para 60 ciclos/segundo (60 fps), não poderemos utilizar o comando tAtual++, pois, a cada ciclo, ele adicionaria 1 ao valor atual do tempo da simulação. Dessa forma, teríamos a seguinte relação: 1 Segundo Real -> 60 tAtual. Para solucionar isso, o comando deverá ser alterado para tAtual = tAtual + (1.0/60.0). Agora, a cada ciclo, o tempo atual de simulação é acrescido em 1/60, resultando em: 1 Segundo Real -> 1 tAtual.
Também precisaremos alterar os tipos dos parâmetros de nossas funções de int para float, para trabalharmos sempre com valores decimais.
Uma solução mais geral seria utilizar a variável frameRate, interna ao próprio Processing, no lugar do 60 em (1.0/60.0), pois garantiríamos um acréscimo de tempo em função de qualquer framerate utilizado.
Essa tarefa ficou mais curta mas pelo enunciado ser mais simples e direto.
Código em Processing: Tarefa 3
|