As curvas do espirógrafo e as órbitas dos planetas

Comprei um espirógrafo, para analisar melhor as curvas que este produz (são diferentes das que eu tinha feito antes).

Segue a implementação descrita a seguir, em versão web: https://asgunzi.github.io/Espirografos/.

Fiz algumas figuras para entender a lógica deste — vide o scan abaixo.

Esquematicamente, imagine um círculo menor rodando dentro de um círculo maior.

Além disso, dentro do círculo menor, escolho a posição do ponto onde coloco a caneta, representada pelo círculo vermelho abaixo.

A posição inicial do círculo menor é dada pelo círculo verde abaixo.

O raio do círculo maior é R, o do círculo menor que roda dentro do círculo maior é r2.

A posição da caneta pode ser descrita por um raio r3, e um ângulo lambda em relação ao centro do círculo menor no início da rotação.

Imagine que o círculo menor rodou um ângulo theta em relação ao círculo maior.

A posição do CENTRO do círculo menor vai ser dada pelas equações da figura — até agora, nenhuma novidade, são equações de um círculo.

A posição inicial do círculo, em verde, mudou, porque girou com o círculo.

O ângulo phi, do deslocamento da posição inicial, é obtida notando que o arco da circunferência maior tem a mesma dimensão do arco da circunferência do círculo menor.

Um arco de circunferência é dado por R*ângulo, onde o ângulo é medido em radianos.

Assim, R*theta = r2*phi.

Ou seja, phi = R*theta / r2.

Se o raio menor r2 for pequeno, phi é maior, ou seja, vai ter que girar mais vezes para chegar ao mesmo ponto.

Agora, finalmente, temos que encontrar a posição da caneta (a bola vermelha). Lembrando, ela estava a um ângulo lambda da posição inicial, e num raio r3.

Portanto, o ângulo até o ponto de tangência entre os dois círculos é (phi — lambda), onde phi = R*theta / r2.

As equações finais têm que levar em consideração a posição inicial do círculo maior, o centro do círculo menor, e a rotação descrita acima.

X = x0 + (R-r2)*Math.sin(theta)-r3*Math.sin(theta*R/r2 - phi)); Y = y0 + (R-r2)*Math.cos(theta)-r3*Math.cos(theta*R/r2 - phi));

Fiz a implementação utilizando a excelente biblioteca D3 de Javascript.

Para o raio maior, utilizei o valor arbitrário de 200. Os outros parâmetros são o raio menor (r2), a posição da caneta (r3) e o número de voltas que o círculo menor dá em torno do maior.

Seguem alguns resultados.

Com os parâmetros descritos, e 1 volta.

2 voltas:

Chega uma hora que não adianta mais dar voltas, que elas coincidem na mesma trajetória.

Outros exemplos:

Nota: o ângulo lambda foi desprezado, no final das contas, porque apenas desloca um pouco o ângulo, sem mudar o formato da figura.

Vide a implementação citada aqui: https://asgunzi.github.io/Espirografos/.

A dança das estrelas

As curvas desenhadas acima lembram as curvas que os planetas fazem no céu, vistos da Terra.

Imagine que a Terra é o círculo menor, girando ao redor do Sol, o círculo maior. A Terra também gira em torno de si mesma. Agora, um outro planeta, Vênus, também gira ao redor do Sol numa velocidade diferente.

Certamente, a equação dos planetas é muito mais complexa: é em três dimensões, as órbitas são elípticas, e o outro planeta gira em torno do Sol também. Porém, a ideia geral é mais ou menos semelhante: uma composição de rotações em torno de rotações de rotações, ora fazendo a posição aparente ir para frente, ora para trás, numa eterna dança celestial…

Trilha sonora: O segundo sol, Cássia Eller

“Quando o segundo sol chegar, para realinhar as órbitas dos planetas…”

Vide também:

Originally published at https://ideiasesquecidas.com on May 17, 2020.

Project Manager on Analytics and Innovation. “Samurai of Analytics”. Passionate about Combinatorial Optimization, Philosophy and Quantum Computing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store