Imagens fractais

O assunto

Aprofundando nosso estudo das aplicações tecnológicas dos fractais vamos começar pelo campo no qual estes foram usados primeiro: a produção de imagens realistas de objetos naturais complexos no computador. Os fractais são, reconhecidamente, os meios mais eficientes de introduzir detalhamento realista em imagens sintéticas digitais. Texturas, a variabilidade típica do relevo, a gradação complicada da iluminação, as nuvens e as floculações, nada disso pode ser eficientemente simulado sem a linguagem dos fractais, expressa em algoritmos. Nesta aula vamos ver como os fractais são empregados para este fim e como funcionam alguns dos mais importantes algoritmos usados.

Temas da aula

  1. Seção de perguntas e respostas.
  2. Resolução de atividades.
  3. Revisão do conceito de cobertura.
  4. Compreensão do método de contagem de caixas.
  5. Introdução aos Sistemas de Transformações Iteradas.
  6. O Triangulo de Sierpinski como um "Atrator Estranho".

Função Scilab para gerar Sierpinski usando transformações lineares

// Autor: Prof. Deilson Tavares
// Aula 5 do curso "Fractais e Caos na Ciência e na Tecnologia"
 
// Para quem não sabe, este é o texto de um programa para o Scilab.
// O símbolo "//" indica o começo de um comentário, ok? Isto quer dizer que o Scilab
// não leva em conta o que vem depois de "//". Tudo que vem a seguir, começando 
// com a palavra chave "function" é um programa que roda no Scilab.
 
function s = itera1(pd,p,n) 
// A linha anterior declara uma função cujo resultado é armazenado em s e que precisa de
// argumentos indicados entre parênteses. O significado destes argumentos é o seguinte:
 
// pd - matriz 3 x 2 contendo as coordenadas de três pontos arbitrários. Exemplo: [0 0; 1/2 1; 1 0]
// p - vetor linha contendo as coordenadas de um ponto arbitrário. Exemplo: [1 2]
// n - número de iterações
 
  eps = 1D-10;               // Definimos a variável eps com um valor bem pequeno.
  s = p;                     // Inicializa a matriz resultado s armazenando nela o ponto inicial p.
 
  for i = 1:n,               // Início da estrutura de repetição. A variável i vai assumir valores de 1 até n, repetidamente.
    l = ceil((3-2*eps)*rand()+eps);  // Calcula o menor inteiro que é maior que um número aleatório x tal que 0< x < 3
    p = (pd(l,:)+p)/2;       // Soma a l-ésima linha de pd, dada por pd(l,:) com p e divide por 2. Armazena o resultado no próprio p.
    s = [s;p];               // Acrescenta o novo p como uma linha no fim da matriz resultado s.
  end                        // Fim da estrutura de repetição.       
 
endfunction                  // Fim da função.      
 
// Observe que a função é tudo que vem escrito entre "function" e "endfunction".
// Note também que você pode tirar todos os comentários e a função ainda vai funcionar.

Veja mais programas para o Scilab aqui.