Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

fractal

No description
by

Rafael Meneghel

on 2 November 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of fractal

lado = 30

'Faz o cálculo da altura do triângulo
h = (pLado * Sqr(3)) / 2

'desenha um triângulo equilátero
' Pontos que o triângulo contém.
ponto1(0) = 0: ponto1(1) = 0
ponto1(2) = lado: ponto1(3) = 0
ponto1(4) = lado / 2: ponto1(5) = h
ponto1(6) = 0: ponto1(7) = 0
FRACTAL
A geometria fractal surge no final da década de 70 quando o matemático Mandelbrot reune o conhecimento existente sobre os "monstros matemáticos" e os denomina fractais (MANDELBROT, 1977).
ETAPA 01 - VBA
Construção do Triângulo Mãe
'criar o triângulo invertido central
ponto2(0) = lado / 2: ponto2(1) = 0
ponto2(2) = (3 * lado) / 4: ponto2(3) = h / 2
ponto2(4) = lado / 4: ponto2(5) = h / 2
ponto2(6) = lado / 2: ponto2(7) = 0
ETAPA 02 - VBA
Implementação manual
'desenha Sierpinski
For i = 1 To numSierpinski

'altera constante K
k = 2 ^ i

' Pontos que o triângulo Mãe contém.
trianguloMae(0) = 0: trianguloMae(1) = 0
trianguloMae(2) = lado: trianguloMae(3) = 0
trianguloMae(4) = lado / k: trianguloMae(5) = h
trianguloMae(6) = 0: trianguloMae(7) = 0
' Pontos que o triângulo 1 contém.
triangulo1(0) = lado / k: triangulo1(1) = 0
triangulo1(2) = (3 * lado) / (2 * k): triangulo1(3) = h / k
triangulo1(4) = lado / (2 * k): triangulo1(5) = h / k
triangulo1(6) = lado / k: triangulo1(7) = 0
' Pontos que o triângulo 2 contém.
triangulo2(0) = (3 * lado) / k: triangulo2(1) = 0
triangulo2(2) = (7 * lado) / (2 * k): triangulo2(3) = h / k
triangulo2(4) = (5 * lado) / (2 * k): triangulo2(5) = h / k
triangulo2(6) = (3 * lado) / k: triangulo2(7) = 0
' Pontos que o triângulo 3 contém.
triangulo3(0) = lado / k: triangulo3(1) = h / k
triangulo3(2) = (5 * lado) / (4 * k): triangulo3(3) = (3 * h) / (2 * k)
triangulo3(4) = (3 * lado) / (4 * k): triangulo3(5) = (3 * h) / (2 * k)
triangulo3(6) = lado / k: triangulo3(7) = h / k
Next i
ETAPA 03 - VBA
Automação do Fractal

- Encontra o triângulo de menor lado;
- Cria uma cópia do mesmo;
- Escala a cópia, na proporção de 1/2
três vezes, sob os eixos:
0,0
lado,0
lado/2,h
ETAPA 4 - VBA Quebra de paradigma

'FRACTAL
For i = 1 To numSierpinski - 1

'Comentario
For Each myentity In ThisDrawing.ModelSpace

'Verifica a cor da entidade
If myentity.Color = i Then
For j = 0 To 2
outroP(0) = basePointMain(j * 3 + 0)
outroP(1) = basePointMain(j * 3 + 1)
outroP(2) = basePointMain(j * 3 + 2)

'Escala a cópia
Set trianguloCopyPL = myentity.Copy()
trianguloCopyPL.ScaleEntity outroP, ScaleFactor
trianguloCopyPL.Color = i + 1
Next j
End If
Next
Next i
ETAPA 05 - VBA
Implementação do Triângulo de Sierpinski
Public Sub
fractalFINAL()

'variáveis do programa

Dim
outroP(0 To 2) As Double

Dim
trianguloCopyPL As AcadLWPolyline

Dim
myentity As AcadEntity
'preparação fractal

Call
interageUsuario

Call
desenhaTrianguloMae

Call
defineBasePoint
'Fractal

For
i = 1
To
numSierpinski

'Comentário

For Each
myentity
In
ThisDrawing.ModelSpace

'Verifica se a entidade encontrada é a menor porção do triangulo de Sierpinski

If
myentity.Color = i
Then

For
j = 0
To
2
outroP(0) = basePointMain(j * 3 + 0)
outroP(1) = basePointMain(j * 3 + 1)
outroP(2) = basePointMain(j * 3 + 2)


'Escala

Set
trianguloCopyPL = myentity.Copy()
trianguloCopyPL.ScaleEntity outroP, ScaleFactor
trianguloCopyPL.Color = i + 1

Next
j

End If

Next

Next
i

Call
pintaBranco
ZoomExtents
End

Sub
ETAPA 06 - VBA
Melhorias no codigo e Triângulos genéricos
'criar invertido segunda iteração Sierpinski
ponto3(0) = lado / 4: ponto3(1) = 0
ponto3(2) = (3 * lado) / 8: ponto3(3) = h / 4
ponto3(4) = lado / 8: ponto3(5) = h / 4
ponto3(6) = lado / 4: ponto3(7) = 0

ponto4(0) = (3 * lado) / 4: ponto4(1) = 0
ponto4(2) = (7 * lado) / 8: ponto4(3) = h / 4
ponto4(4) = (5 * lado) / 8: ponto4(5) = h / 4
ponto4(6) = (3 * lado) / 4: ponto4(7) = 0


ponto5(0) = lado / 2: ponto5(1) = h / 2
ponto5(2) = (5 * lado) / 8: ponto5(3) = (3 * h) / 4
ponto5(4) = (3 * lado) / 8: ponto5(5) = (3 * h) / 4
ponto5(6) = lado / 2: ponto5(7) = h / 2
Novo Algoritmo encontrado
'desenha sierpinski: trianguloMãe

' Pontos que o triangulo contém.
trianguloMae(0) = 0: trianguloMae(1) = 0
trianguloMae(2) = lado: trianguloMae(3) = 0
trianguloMae(4) = lado / 2: trianguloMae(5) = h
trianguloMae(6) = 0: trianguloMae(7) = 0

'desenha sierpinski nº 1:

' Pontos que o triangulo 1 contém.
triangulo1(0) = lado / 2: triangulo1(1) = 0
triangulo1(2) = (3 * lado) / 4: triangulo1(3) = h / 2
triangulo1(4) = lado / 4: triangulo1(5) = h / 2
triangulo1(6) = lado / 2:

' Funcao paramudar a cor do triangulo 1
triangulo1PL.Color = 1

'Cria vetor de 9 posições contendo as coordenadas do triangulo Mãe
basePointMain(0) = 0: basePointMain(1) = 0: basePointMain(2) = 0
basePointMain(3) = lado: basePointMain(4) = 0: basePointMain(5) = 0
basePointMain(6) = lado / 2: basePointMain(7) = h: basePointMain(8) = 0
ScaleFactor = 0.5
Public Function
interageUsuario()

'Usuario escolhe o primeiro ponto no ModelSpace
escolhePonto1 = ThisDrawing.Utility.
GetPoint
(, "Clique na area de trabalho para definir o PRIMEIRO ponto do triangulo")


'Usuario escolhe o Segundo ponto no ModelSpace
escolhePonto2 = ThisDrawing.Utility.
GetPoint
(, "Clique na area de trabalho para definir o SEGUNDO ponto do triangulo")


'Usuario escolhe o terceiro ponto no ModelSpace
escolhePonto3 = ThisDrawing.Utility.
GetPoint
(, "Clique na area de trabalho para definir o TERCEIRO ponto do triangulo")


'Pergunta o numero de iterações de sierpinski
numSierpinski = Val(ThisDrawing.Utility.
GetInteger
("Defina o número de interações de Sierpinski:"))

End Function
Call interageUsuario
Public Function
desenhaTrianguloMae()

'desenha sierpinski: trianguloMãe

' Pontos que o triangulo contém.
trianguloMae(0) = escolhePonto1(0): trianguloMae(1) = escolhePonto1(1)
trianguloMae(2) = escolhePonto2(0): trianguloMae(3) = escolhePonto2(1)
trianguloMae(4) = escolhePonto3(0): trianguloMae(5) = escolhePonto3(1)
trianguloMae(6) = escolhePonto1(0): trianguloMae(7) = escolhePonto1(1)

' Funcao para desenhar o triangulo nos pontos previamente definidos.
Set trianguloMaePL = ThisDrawing.ModelSpace.AddLightWeightPolyline(trianguloMae)

' Funcao para atribuir a cor de valor 1 ao triangulo mãe.
trianguloMaePL.Color = 1

End Function
Call desenhaTrianguloMae
Public Function
defineBasePoint()

'Popula o vetor basePointMain com as coordenadas dos pontos do trianguloMae
basePointMain(0) = escolhePonto1(0): basePointMain(1) = escolhePonto1(1): basePointMain(2) = escolhePonto1(2)
basePointMain(3) = escolhePonto2(0): basePointMain(4) = escolhePonto2(1): basePointMain(5) = escolhePonto2(2)
basePointMain(6) = escolhePonto3(0): basePointMain(7) = escolhePonto3(1): basePointMain(8) = escolhePonto3(2)
'Set fator de escala

ScaleFactor = 0.5

End Function
Call defineBasePoint
Public Function
pintaBranco()
'varre a modelSpace e define as cores para Branco

For Each
myentity
In
ThisDrawing.ModelSpace
myentity.Color = 0

Next

End Function
Call pintaBranco

Dim

trianguloMae(0 To 7)
As

Double

Dim
trianguloMaePL
As
AcadLWPolyline

Dim
escolhePonto1
As
Variant

Dim
escolhePonto2
As
Variant

Dim
escolhePonto3
As
Variant

Dim
numSierpinski
As
Double


Dim
basePointMain(0 To 8)
As
Double

Dim
ScaleFactor
As
Double
Variáveis Globais
Wertel Oberfell – Mesa Fractal
Nosigner – Mesa Arborism
AA School – Pavilhão
Wacław Sierpiński
- Dado um triângulo inicial equilátero;
A geometria fractal tem como características principais:
dimensão fractal,
auto-similaridade,
escalas infinitas,
recursividade,
realimentação
e iteração.
Triângulo de Sierpinski
- Triplicar pelos vértices do triângulo principal;
- Copiar o triângulo;
- Repetir a partir do segundo passo para cada triângulo.
-Reduzir a cópia pela metade;
(0,0)
(lado,0)
(lado/2,h)
(0,0)
ETAPA 01
GRASSHOPPER

ETAPA 03
GRASSHOPPER

basePointMain(0 to 8)
escolhePonto1(x,y,z)
escolhePonto2(x,y,z)
escolhePonto3(x,y,z)
X
Y
Z
X
Y
Z
X
Y
Z
Os fractais podem descrever formas naturais de maneira mais adequada que a geometria euclidiana, e podem ser representados pelos objetos rugosos, porosos ou fragmentados (MANDELBROT, 1998).
Os fractais são irregulares, auto-similares, de complexidade infinita, desenvolvidos através de iterações, dependem da condição inicial e são comuns na natureza (LORENZ, 2002).
Criação do triangulo principal e subdivisão
para definição dos pontos médios.
Construção do triângulo unindo linhas e pontos.
Implementação manual de três interações.
Composição do triângulo equilátero inicial com o componente Hoopsnake.
Objeto construído com 5 interações.
Composição para triângulos genéricos.
Resultado genérico para 5 iterações.
Optimização de código.
Código alterado para uma figura de 5 lados.
ETAPA 02
GRASSHOPPER

Maycon Sedrez
Rafael Meneghel
Full transcript