Ajuda com variável. Pêndulo!?

4 respostas
B

Oi, estou fazendo um código só que travei em uma parte…

Eu quero que uma variável do tipo inteiro oscile de 0 a 255. Só que já passei ontem o dia inteiro tentando resolver isso e não consigo. A variável começa em 0 e vai aumentando até 255 e depois volta de 255 até 0 e fica neste loop, como um pêndulo.

O que estou fazendo é desenhar um brilho externo que oscile a saturação ao redor imagem. Já esta tudo pronto, só falta fazer esta variável oscilar como se fosse um pêndulo.

Tentei if’s e elses mas não cheguei a um resultado desejado. Já não sei se é por aí…

Alguem pode me ajudar com lógica e matemática?

Desde já agradeço quem puder ajudar.

4 Respostas

E

Um pêndulo não-amortecido (que é o que você quer) segue a equação matemática do seno. Por exemplo, digamos que seu período seja de 5 segundos e que você queira gerar 10 valores diferentes por segundo, perfazendo um total de 50 amostras.
Os valores vão de 0 até 255.

Os valores do seno, no intervalo de 0 até 2*pi, variam de -1 até +1, passando pelo valor 0.

Nesse caso, faça uma regra de três. O valor para 0 segundos corresponde a 0 radianos, e o valor para 5 segundos (50 amostras) corresponde a 2*pi radianos.
O valor -1 corresponde ao valor de brilho 0, e o valor +1 corresponde ao valor de brilho 255.

Então, pegue o seu valor (que varia de 0 até 50), divida por 50, multiplique por 2*pi (ou seja, 2 * Math.PI) , e aplique a função seno (ou seja, Math.sin).
A seguir, pegue esse valor, multiplique por 128, e some mais 127. Esse é o valor periódico.

Se o valor for maior que 50, ache o resto da divisão por 50 (ou seja, % 50), e faça as contas acima.

ViniGodoy

A solução tupiniquim é:

int valor = 0; int soma = 1; while (true) { System.out.println(valor); valor += soma; if (valor == 0 || valor == 255) { soma *= -1; } }

peczenyj
for(int i=0;i<=2*X;i++){

int j=X-i;

// loop de X a -X em j

}
B

Aee pessoal, muito obrigado… o que vcs colocaram aqui me *ajudou. Consegui resolver sem ter que partir para fisica do pêndulo… foi meio gambiarra mas funcionou… depois eu estudo fisica para fazer uma variável oscilar.

Obrigado novamente a todos.

Criado 19 de junho de 2010
Ultima resposta 19 de jun. de 2010
Respostas 4
Participantes 4