A criação dessas máquinas, que começaram a aparecer em meados do século 19 e chegou em popularidade na década de 1890, não podem ser conclusivamente atribuídas a uma única pessoa, embora acredita- se que Hugh Blackburn, professor de matemática na Universidade de Glasgow, possa ter sido o inventor oficial.
Um tipo de harmonógrafo também bem conhecido é o pantógrafo, que usam motores elétricos em vez de pêndulos para mover uma caneta para criar desenhos fantasticamente detalhados e belas linhas. A principal diferença entre este e o harmonógrafo tradicional, além dos motores, é que o pantógrafo possui braços em formato de tesouras que podem ter suas posições alteradas para formarem desenhos diferentes de acordo com a velocidade atribuída a eles.
Há também quem utilize tipos de harmonógrafos como brinquedos. É o caso do espirógrafo, um brinquedo muito famoso que consiste em um conjunto de engrenagens, anéis e retas de plástico com dentes e buracos em seu interior, que, para usá-los, se encaixam um dentro do outro e, em cima de uma folha de papel, com a ajuda de um lápis introduzido nos buracos vazados das peças e arrastado pelo papel, fazem as peças se moverem em movimentos uniformes, desenhando no papel diversas formas.
Nosso Hamonografo é baseado em funções trigonométricas seno e cosseno e variações de ângulo e amplitude.
O eixo X é baseado na formula = L/2 + cos(angulo1)*(a - i), onde L é a largura da tela, a é a amplitude inicial, e i é um incremento que se modifica em tempo de execução. Em tempo de execução as variáveis angulo1 e i são modificadas fazendo assim uma elipse com amplitude menor e com rotação diferente.
O eixo Y é baseado na formula = L/2 + seno(angulo1)*(a + i), onde L é a largura da tela, a é a amplitude inicial, e i é um incremento que se modifica em tempo de execução. Em tempo de execução as variáveis angulo1 e i são modificadas fazendo assim uma elipse com amplitude maior e com rotação diferente.
Utilizando x = 350 + cos(angulo1)*(200-i), onde angulo1 e i são iniciados em 0(zero),
Y = 350 + sen(angulo2)*(200+i), onde angulo2 é inciado em 60 e o i em 0 e com ajuda de algumas variáveis de controle para realizar o controle dos incrementos nós obtivemos a seguinte imagem:
No processing utilizamos a função descrita abaixo:
int relogio; //Variável para fazer o timer
int intervalo=100; //intervalo em millisegundos
//Variáveis para criação do Harmonografo
int anguloHorizontal = 0; //angulo inicial passado para posição x
int anguloVertical = 60; //angulo inicial passado para posição y
float incHorizontal = 3; //valor que incrementa o angulo dentro do método Desenho()
float incVertical = 3; //valor que incrementa o angulo dentro do método Desenho()
float amplitude = 200; //valor que será multiplicado ao resultado do coseno ou seno para a amplitude do desenho
float variacaoAmplitude = 6; //Valor que é utilizado para incrementar e decrementar a amplitude. Assim gerando a dinamica do desenho
//dimensoes da tela
int largura = 700;
int altura = 700;
//Angulos
float cos;
float sen;
float tan;
//Controle
boolean controle; //variável de controle para modificação de parametros
void desenho()
{
fill(cos*(100-variacaoAmplitude),sen*200,tan*(150+variacaoAmplitude));
ellipse(350+cos*(amplitude - variacaoAmplitude ) , 350+-sen*(amplitude + variacaoAmplitude),10,10);
anguloHorizontal += incHorizontal;
anguloVertical += incVertical;
}
void draw()
{
cos = cos(radians(anguloVertical));
sen = sin(radians(anguloHorizontal));
tan = tan(radians(anguloHorizontal));
if (millis()>relogio+intervalo)
{
relogio=millis();
if(!controle)
{
variacaoAmplitude++;
}
else
{
variacaoAmplitude--;
}
if(variacaoAmplitude > 120)
{
controle = !controle;
}
else if(variacaoAmplitude < -120)
{
controle = !controle;
anguloVertical = - anguloVertical;
anguloHorizontal = - anguloHorizontal;
}
}

Nenhum comentário:
Postar um comentário