Mil cardióides no Excel

Estive a folhear um livro de puzzles antigo, quando me deparo com uma curva matemática curiosa: a cardióide.

Cardiod_36_2.JPG

Esta tem este nome por parecer um coração.

Um detalhe curioso é que é possível desenhá-la somente usando régua e compasso. Como era um processo simples, mas trabalhoso para quem não tem muita coordenação motora, achei mais fácil fazer uma macro em VBA no Excel do que utilizar lápis, papel, régua e compasso.

Roteiro:
– Como desenhar a cardióide no braço
– Dicas de como usar o VBA

Link da planilha Excel para download: Google drive ou https://github.com/asgunzi/cardioidExcel (é necessário ativar macros para rodar).


Como desenhar a cardióide no braço

O desenho da cardióide segue os seguintes passos:

Pegue uma circunferência, e a divida em n ângulos iguais, formando n “casas”.

Cardiod_drawing1.JPG

Trace uma linha num diâmetro.

Cardiod_drawing2.JPG

Trace uma linha pulando uma casa do lado direito e duas do lado esquerdo.

Cardiod_drawing3.JPG

Repita o processo n vezes.

Cardiod_drawing4.JPG
Se eu chamar de “n” o número de pontos, e de “step” o número de casas puladas, posso fazer algumas variantes desta brincadeira, com efeitos muito bonitos.

Cardiod_72_2.JPG

Em geral, quanto mais linhas, maior a resolução da cardióide – porém linhas demais tornam-o ilegível.

Cardiod_33_1.JPG

Para mudar a cor, basta colorir a célula da cor da forma desejada.

Cardiod_30_0.JPG

Quanto maior o step, mais saliências a figura vai ter.

Cardiod_18_2.JPG

Cardiod_72_3.JPG

Embora cada curva dessas possa ter um nome, é mais fácil continuar chamando-as de cardióides.

Cardiod_100_4.JPG
E assim sucessivamente, é possível fazer cardióides a mil.

 

Cardiod_100_5.JPG

 


 

Como usar o vba do Excel para fazer este desenho

 

Da mesma forma que, no braço, é necessário apenas régua e compasso, no excel é necessário somente círculos, linhas e matemática.

 

Vou colocar apenas os pontos principais.

Para adicionar um círculo no Excel, é só usar o shape msoShapeOval.

 

‘Adiciona círculo na posição (left, top), com raio dado.
ActiveSheet.Shapes.AddShape(msoShapeOval, left, top, 2 * raio, 2 * raio).Select

 

Para traçar uma linha no Excel, utilizar o addLine do shapes, onde o ponto 1 é dado por coordenadas (x1,y1) e o ponto 2 por coordenadas (x2,y2).

 

‘Adiciona uma linha
ActiveSheet.Shapes.addLine(x1, y1, x2, y2).Select

 

Para saber quais os pontos a gerar.

Divido n pontos num círculo, o que equivale a um ângulo theta de 360 graus (ou 2*pi) dividido por n.

 

Cada ponto terá coordenadas (raio*cos(theta), raio*sin(theta)) em relação ao centro do círculo.

Cardiod_angulo.jpg

Como o centro do círculo tem coordenadas (latOrigin, longOrigin), deve-se compensar este valor. E crio um array para armazenar estas informações.

‘Gera coordenadas
ReDim arrRef(1 To npoints, 1 To 2) ‘lat e long

For i = 1 To npoints
  theta = (i – 1) * 2 * pi / npoints
  arrRef(i, 1) = latOrigin + raio * Cos(theta) ‘lat
  arrRef(i, 2) = longOrigin – raio * Sin(theta) ‘long
Next i
Finalmente, traço as linhas entre dois pontos (ponto i e ponto j) pulando o step dado.

For i = 1 To npoints

  ActiveSheet.Shapes.addLine(arrRef(i, 1), arrRef(i, 2), arrRef(j, 1), arrRef(j, 2)).Select
  ‘Update j: adiciona step
  j = (j + step – 1) Mod npoints + 1

Next i

 

 

A parte VBA tem que ter familiaridade com o assunto para entender, porém, os passos são exatamente os mesmos de fazer com régua e compasso, com lápis e papel!

Bônus: Cardióide com 6 saliências.

Cardiod_150_6.JPG

 

 

Links:

https://en.wikipedia.org/wiki/Cardioid

https://github.com/asgunzi/cardioidExcel

Main blog: https://ideiasesquecidas.com/

Other writings: https://medium.com/@arnaldogunzi

Anúncios

Um comentário sobre “Mil cardióides no Excel

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s