Buscar

Linguagens de Programação - Construção de Fractais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introduc¸a˜o
Construc¸a˜o de Fractais
Rodrigo Bonifa´cio
12 de abril de 2012
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Inspirac¸a˜o para esses slides
The Haskell school of expression (P. Hudak)
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Ainda relacionado a mo´dulos . . .
Podemos reusa´-los em outras partes da aplicac¸a˜o. Inclusive,
frequentemente reusamos mo´dulos desenvolvidos por outros
grupos.
Hackage
Uma ferramenta que facilita o empacotamento e a
distribuic¸a˜o de bibliotecas e mo´dulos Haskell.
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
SOEGraphics
Uma biblioteca para renderizar formas geome´tricas em Haskell.
Principais funcionalidades:
Criac¸a˜o de janelas
Exibic¸a˜o de textos, e figuras geome´tricas nas janelas
. . .
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Exibindo um texto em uma janela
main0 =
runGraphics (
do
w <- openWindow "Primeiro..." (300, 300)
drawInWindow w (text (100, 200) "Olah mundo ...")
spaceClose w
)
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Fractal de Sierpinsk
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Preenchimento de triaˆngulos
-- preenchimento de triangulos retangulos.
-- coordenadas (x,y)
-- tamanho size
fillTri :: Window -> Int -> Int -> Int -> IO ()
fillTri w x y size
= drawInWindow w
polygon [(x,y), (x + size, y), (x, y-size),(x,y)]
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Soluc¸a˜o recursiva para a construc¸a˜o do fractal
minSize :: Int
minSize = 8
sierpinskiTri :: Window -> Int -> Int -> Int -> IO()
sierpinskiTri w x y size =
if size <= minSize
then fillTri w x y size
else do let size2 = size ‘div‘ 2
sierpinskiTri w x y size2
sierpinskiTri w x (y - size2) size2
sierpinskiTri w (x + size2) y size2
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
A soluc¸a˜o anterior, baseada no livro SOE, na˜o e´ intuitiva
sierpinskiTri’ :: Window -> Point -> Point -> Point -> Int -> IO()
sierpinskiTri’ w p1 p2 p3 s =
let
p1’ = (fst p1, snd p2)
p2’ = pm p1 p2 -- calcula o ponto medio entre p1 e p2
p3’ = pm p1 p3 -- calcula o ponto medio entre p1 e p3
in do
if (s <= 1)
then fillAnyTriangle w Blue p1’ p2’ p3’
else do
fillAnyTriangle w Blue p1’ p2’ p3’
sierpinskiTri’ w p1 p2’ p3’ (s-1)
sierpinskiTri’ w p2’ p2 p1’ (s-1)
sierpinskiTri’ w p3’ p1’ p3 (s-1)
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Sierpinski Carpet
sierpinskiC :: Window -> Int -> Int -> Int -> IO ()
sierpinskiC w x y size =
let
sss = size ‘div‘ 3
in
if size <= 9
then fillSquare w (x + sss) (y + sss) sss
else
do
fillSquare w (x + sss) (y + sss) sss
sequence_ [ sierpinskiC w (x + x’ * sss) (y + y’ * sss) sss
| x’ <- [0..2]
, y’ <- [0..2]
, (x’, y’) /= (1,1)
]
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
Introduc¸a˜o
Rodrigo Bonifa´cio Construc¸a˜o de Fractais
	Introdução

Outros materiais