.: Fractal Tetra-círculo :.

Este foi um fractal elaborado em 1995 para as primeira atividades preparadas pelo LEM para explorar o conceitos de programação, progressões e limite, utilizando sistemas de geometria interativa (dinâmica). Ele é baseado em um circunferência com quatro polos, gerando quatro novas circunferências (de raios menores), daí o nome arbitrado para o fractal. Na versão aqui apresentada, a base do fractal serão dois pontos, mas pode-se utilizar também uma circunferência nesta base.
A figura 1 apresenta a construção do fractal Tetra-círculo em três fases, na primeira está a base do fractal, na segunda a representação com nível 1 e na terceira com nível 2. Estes níveis corresponderão à profundidade de recorrência utilizada na aplicação do script (a ser construído aqui).
Figura 1: 3 representações do fractal proposto nesta página, com profundidades de recorrência respectivamente 0, 1 e 2.


Construção do script

Nesta atividade é conveniente utilizar a versão aplicativa do iGeom, por esta permitir que o script seja gravado facilmente no computador do usuário. Entretanto também pode-se utilizar a versão applet, inclusive remotamente via Web, mas neste caso ao fechar o navegador o usuário "perderá" o script). No caso de uso via Web recomenda-se seguir a receita da seção específica para applet.
  1. Dados A e B (que serão parâmetros do script), dispare o gravador de script "clicando" no botão secundário .
    Após o "clique" será aberta a janela de anotação de script, na qual todos os parâmetros do mesmo serão anotados na parte superior, enquanto que na parte central serão anotadas todas as construções (e operações sobre objetos geométricos) feitas a partir deste momento.
  2. Construa a circunferência de centro A, passando por B.
    Note que neste momento, na janela de anotação de script, aparecerão A e B como parâmetros para o script em definição e será anotada na área central uma representação para o objeto construído: c0 := Circunferência(A,B).
    Figura 2: primeira operação anotada (usou 2 pontos não construídos pelo script => serão parâmetros)
  3. Construa a reta r passando por A e por B e a reta s perpendicular a r, passando por A.
    Note que nestas operações nenhum novo parâmetro foi adicionado à lista de parâmetros, pois todos os objetos utilizados, excetuando-se A e B, foram "construídos pelo próprio script".
    Figura 3: à esquerda a janela de script com segunda e terceira operações anotadas e à direita a construção correspondente

  4. Construa os (outros) três "polos" da circunferência. as interseções C e D entre c0 e s e a interseção E entre c0 e r.
    Figura 4: três novos passos anotadas (relativos às construções de interseções)
  5. Construa os quatro pontos médios F, G, H e I, respectivamente dos segmentos (ou pares de pontos) AC, AB, AD e AE.
    Figura 5: quatro novos passos anotadas (relativos às construções de pontos médios)
  6. Construa o "interior da circunferência" c0 e esconda objetos "auxiliares". Estas operações tem como função única fornecer um efeito gráfico mais interessante ao fractal. Primeiro as edições: esconda todos os objetos "auxiliares" (retas r e s e rótulo c0).
    Agora a operação para construir o "interior da circunferência" e mudar sua cor original:
    1. "clique" no botão primário de medidas ;
    2. marque a circunferência c0 e "clique" no botão secundário interior da circunferência ;
    3. esconda a medida de área que aparecerá;
    4. edite a cor do interior da circunferência, o que pode ser feito de um dos dois modos:
      1. com o botão selecionador , "clique" sobre interior da circunferência (em cinza originalmente) e depois "clique" no botão secundário de edição . Na janela de edição a ser aberta, altere a cor convenientemente, arrastando as barras de definição de cor (do vermelho, do verde ou do azul). Ao final "clique" no botão OK.
      2. com o botão para selecionar ou para mover ativado, dê um "clique" duplo sobre o interior da circunferência (a área cinza originalmente). Será aberta a mesma janela de edição indicada no item acima, então repita os passos ali sugeridos.
    Figura 6: quatro novos passos anotadas (relativos às construções de pontos médios)
  7. A base do fractal está pronta, agora deve-se acertar a recorrência.
    Este é um momento delicado, em que deve ser visualizado o processo de ampliação do fractal. Para isso deve-se responder à seguinte pergunta:
    supondo que a definição do script esteja finalizada, sobre quais objetos da base este script deveria ser aplicado para conseguir mais um nível do fractal?

    Assim, para conseguir encontrar no fractal em construção, os pontos corretos em que as recorrências devem ser anotadas, o usuário pode pensar que o script esteja pronto e decidir em quais objetos deveria aplicá-lo para conseguir o segundo nível do fractal (na figura 1, a imagem central indicada por profundidade: 1).
    Usando este raciocínio pode-se perceber que seriam necessárias 4 aplicação do script em construção e como a ordem dos parâmetros já registrados é Ponto(A), Ponto(B), sendo A o centro da circunferência original, as aplicações devem ser nos pólos e pontos médios (nesta ordem): CF, BG, DH e FI. Note que a ordem de marcação dos parâmetros é essencial para o efeito final, sendo que esta ordem deve ser observada no topo da janela de gravação do script (indicada nas figuras 2 a 7 como rótulo inicial Parâmetros). No script em construção a ordem de parâmetros é primeiro o centro da circunferência a ser gerada, o ponto A, e depois o ponto que define seu raio, o ponto B.
    Portanto, deve-se marcar cada par de pontos na ordem correta e aplicar a recorrência:
    Lembre-se: a ordem de aplicação da recorrência deve respeitar os mesmo princípio da aplicação de um script qualquer, ou seja, é necessário saber a sequência correta em que o mesmo deve ser aplicado (como em qualquer algoritmo/função, nem sempre comutando os parâmetros o resultado produzido é o mesmo, como ocorre no algoritmo da divisão de dois inteiros e no fractal Tetra-círculo).
    Figura 7: anotação das últimas operações de edição e das 4 chamadas recorrentes
    Na figura 7, a janela em primeiro plano é responsável por anotar as instruções para geração do script. Na parte superior dela estão os 2 parâmetros necessário para aplicar o script e na parte central da janela, estão as últimas instruções do script. Vale notar que as últimas 4 instruções são as anotações de recorrência, Recorrência (C,F) a Recorrência (F,I).

Execução/aplicação do script

Como explicado na seção o uso de script nas versões aplicativo e applet apresentam diferenças. Na versão aplicativo pode-se disparar um script gravado em disco enquanto na versão applet é necessário que o script esteja associado a um dos botões de script (e isso pode ser feito gerando-se um novo script ou carregando um a partir do código HTML.
Neste exemplo não será detalhado o modo como o script será disparado (a partir de um botão de script - a - ou abrindo-o do sistema de arquivos - ).
  1. Marque os pontos sobre os quais serão aplicados o script (no caso dois) e depois dispare o script.
  2. Como este é um script recorrente, será aberta uma janela (abaixo) solicitando que digite a profundidade de recorrência (se digitar 0, não será aplicada qualquer recorrência e aparecerá uma construção análoga à obtida durante a construção do script).
    Figura 8: janela para escolher a profundidade de recorrência.
O crescimento do número de objetos numa construção gerada por script recorrente possibilita seu uso didático em diferentes níveis de ensino. Por exemplo, pode-se solicitar que o aluno encontre a função que descreve o número de objetos (de algum tipo específico ou vários) em relação à profundidade de recorrências.

Exemplo do script pronto

Nesta sub-seção são apresentados 2 applets, no primeiro a área de desenho está em branco mas o primeiro botão de script já está com o script aqui exposto. No segundo applet é apresentada construção interativa que gerou a figura 1, ilustrando 3 níveis de aplicação do script Tetra-círculo. No applet, construa pares de pontos na área de desenho e aplique sobre os mesmo o fractal Tetra-círculo, utilizando diferentes profundidades de recorrência.
Atenção: se utilizar como profundidade de recorrência um "número grande" seu sistema poderá travar!
Na verdade, não precisa ser um número realmente grande, pois a função que descreve o crescimento do número de objetos neste script é exponencial com base 4: sendo k a profundidade, o número de objetos é dado por uma expressão do tipo K1 + (40+41+42+...+4k).
</tr>
profundidadenúmero de objetostotal
0: 2+12 * (40)= 2+12
1: 2+12 * (40+41)= 2+60
2: 2+12 * (40+41+42)= 2+252
3: 2+12 * (40+41+42+43)= 2+1020
Tabela 1: tabela ilustrando o crescimento no número de objetos para o script recorrente Tetra-círculo apresentado.

Applet 1: no primeiro botão de script já existe o algoritmo para gerar o fractal Tetra-círculo.
No applet acima já existe no botão de script 1 o algoritmo para gerar representações do fractal Tetra-círculo, entretanto é recomendável que o usuário tente construir o seu script para verificar o entendimento do processo. Na seção são propostos outros fractais como desafio: são apresentadas 3 representações de cada fractal, para que o usuário procure ele próprio construir um script recorrente que o gere.


No applet abaixo, é apresentada a construção interativa que gerou a figura 1, ilustrando 3 nível de aplicação do script, ou seja, foram gerados com aplicações do script com profundidades 0, 1 e 2. Os botões foram desabilitados por um parâmetro HTML, assim é possível interagir com a construção apenas movendo os pontos com rótulo A (os demais não são "móveis").
Applet 2: representações para o fractal Tetra-círculo, com aplicações do script.

Na construção interativa acima, pode-se mover os pontos P1, P2, P3 e os 3 pontos A (centro das circunferências maiores). Para movê-los é necessário estar com o botão "mover" ativado , dar um "clique" sobre o ponto, soltar o botão do mouse e então movê-lo livremente. Para finalizar a movimentação, dê novo "clique", desta vez em qualquer posição da área de desenho.