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
- Seção de perguntas e respostas.
- Resolução de atividades.
- Revisão do conceito de cobertura.
- Compreensão do método de contagem de caixas.
- Introdução aos Sistemas de Transformações Iteradas.
- 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.






