Conteúdo principal
Oscilação com velocidade angular
O conhecimento dos conceitos de oscilação, amplitude e frequência/período geralmente é necessário para o curso de simulação de comportamentos do mundo real. No entanto, há uma maneira um pouco mais fácil de reescrever o exemplo acima e obter o mesmo resultado. Vamos dar uma olhada na nossa fórmula de oscilação mais uma vez:
var x = amplitude * sin(TWO_PI * frameCount / period);
Agora vamos reescrevê-la de um modo um pouco diferente:
var x = amplitude * sin(algum valor que aumenta lentamente);
Se nos importamos em definir precisamente o período de oscilação em termos de quadros de animação, poderíamos precisar da fórmula na maneira em que a escrevemos pela primeira vez, mas podemos simplesmente reescrever nosso exemplo usando o conceito de velocidade angular (e aceleração) da lição de Movimento Angular. Considerando:
var angle = 0;
var aVelocity = 0.03;
...em
draw()
, podemos dizer simplesmente que:angle += aVelocity;
var x = amplitude * sin(angle);
...em que
angle
é o nosso “algum valor que aumenta lentamente.”Aqui nosso programa modificado:
Só porque não há uma referência direta a ele, não quer dizer que eliminamos o conceito de período. Afinal, quanto maior a velocidade angular, mais rapidamente o círculo oscilará (reduzindo, então, o período). Na verdade, o número de vezes necessárias para aumentar a velocidade angular até chegar a TWO_PI é igual ao período ou:
período = TWO_PI / velocidade angular
Vamos expandir um pouco esse exemplo e criar um objeto
Oscillator
. E vamos supor que a oscilação ocorra junto ao eixo x (como acima) e ao eixo y. Para isso, vamos precisar de dois ângulos, duas velocidades angulares e duas amplitudes (um para cada eixo). Another perfect opportunity for PVector
!Leia o código abaixo:
Este curso "Natural Simulations" é um derivado do "The Nature of Code" por Daniel Shiffman, usado sob a Creative Commons Attribution-NonCommercial 3.0 Unported License.
Quer participar da conversa?
Nenhuma postagem por enquanto.