Sierpinski3D
In [ ]:
Copied!
#Curso de Extensão:
#Lógica de programação aplicada à criação e análise da forma
#UFBa - Faculdade de Arquitetura - 2017.2
#Professor: Fernando Ferraz Ribeiro
#Exemplo: Triângulo de Sierpinski (análogo 3d)
#Curso de Extensão:
#Lógica de programação aplicada à criação e análise da forma
#UFBa - Faculdade de Arquitetura - 2017.2
#Professor: Fernando Ferraz Ribeiro
#Exemplo: Triângulo de Sierpinski (análogo 3d)
In [ ]:
Copied!
import rhinoscriptsyntax as rs
from Rhino.Geometry import Point3d, Brep
import ghpythonlib.components as ghcomp
import rhinoscriptsyntax as rs
from Rhino.Geometry import Point3d, Brep
import ghpythonlib.components as ghcomp
--- entradas raio (item, float) iterac (item, int)
In [ ]:
Copied!
#plano de trabalho
pl = rs.WorldXYPlane()
#decompondo o plano
o,vrx, vry, vrz = pl
#plano de trabalho
pl = rs.WorldXYPlane()
#decompondo o plano
o,vrx, vry, vrz = pl
In [ ]:
Copied!
#base da piramide
base = ghcomp.Polygon(pl,Raio,3,0.0)
#base da piramide
base = ghcomp.Polygon(pl,Raio,3,0.0)
In [ ]:
Copied!
#vertice superior da piramide
p1 = Point3d(Raio*vrz)+ Point3d(o)
#vertice superior da piramide
p1 = Point3d(Raio*vrz)+ Point3d(o)
In [ ]:
Copied!
#desenhando a piramide
piramide = ghcomp.ExtrudePoint(base,p1)
#desenhando a piramide
piramide = ghcomp.ExtrudePoint(base,p1)
In [ ]:
Copied!
#listas auxiliares
lista1 = [piramide]
lista2 = []
#listas auxiliares
lista1 = [piramide]
lista2 = []
In [ ]:
Copied!
#iterações
for i in range(iterac):
# para cada piramide
for j in lista1:
#extrair os vertices
vert = ghcomp.DeconstructBrep(j)[2]
#para cada vertice
for k in vert:
# escalonar a piramide em direção ao vertice
elemento = ghcomp.Scale(j,k,.5)[0]
#olocar o elelemnto na lista
lista2.append(elemento)
# preparando listas para nova iteração
lista1 = lista2
lista2 = []
#iterações
for i in range(iterac):
# para cada piramide
for j in lista1:
#extrair os vertices
vert = ghcomp.DeconstructBrep(j)[2]
#para cada vertice
for k in vert:
# escalonar a piramide em direção ao vertice
elemento = ghcomp.Scale(j,k,.5)[0]
#olocar o elelemnto na lista
lista2.append(elemento)
# preparando listas para nova iteração
lista1 = lista2
lista2 = []
In [ ]:
Copied!
# mostrando os resultados
a = lista1
# mostrando os resultados
a = lista1
In [ ]:
Copied!