""" Tree 1 20.08.2019 www.3d-meier.de """ import c4d import random import math import cmath # Variablen und Konstanten Titel = 'Tree 1' # Name N = 1000000 # Anzahl Punkte Nv = 100 # Anzahl Punkte verwerfen dx = 2.0 # Breite Polygon dy = 2.0 # Hoehe Polygon Faktor = 1000 # Skalierungsfaktor r = (1 + math.sqrt(5.0))/2.0 def CreatePolygonObject(): obj = c4d.BaseObject(c4d.Opolygon) obj.ResizeObject(4*N, N) obj.SetName(Titel) # Startwert der Berechnung z = complex(0.50, 0.5) # Konstanten a = (complex(0, 1)**(-1.2))/2 b = 0.5 c = (complex(0, -1)**(-1.2))/2 # a = complex(0, 1)/(r*math.sqrt(math.sqrt(5.0)) ) # b = 1/r # c = complex(0, -1)/(r*math.sqrt(math.sqrt(5.0)) ) # a = complex(-1, math.sqrt(3))/4 # b = 0.5 # c = complex(-1, -math.sqrt(3))/4 # a = complex(0, 0.5) # b = 0.5 # c = complex(0, -0.5) # a = (complex(0, 1)**(-0.8))/2 # b = -0.5 # c = (complex(0, -1)**(-0.8))/2 # a = (complex(0, 1)**(-0.666666))/2 # b = -0.5 # c = (complex(0, -1)**(-0.666666))/2 # a = (complex(0, 1)**(-1.0))/2 # b = -0.5 # c = (complex(0, -1)**(-1.0))/2 # a = (complex(0, 1)**(-1.333333))/2 # b = -0.5 # c = (complex(0, -1)**(-1.333333))/2 # Zähler für Punkte setzten zz = 0 # Zähler für Polygone setzten zzz = 0 for i in xrange(0,Nv): zufall = random.randint(0,2) if zufall == 0: z = 1 + a*z if zufall == 1: z = 1 + b*z if zufall == 2: z = 1 + c*z for i in xrange(0,N): zufall = random.randint(0,2) if zufall == 0: z = 1 + a*z if zufall == 1: z = 1 + b*z if zufall == 2: z = 1 + c*z x = z.real*Faktor y = z.imag*Faktor obj.SetPoint(zz, c4d.Vector((x-dx/2.0),(y+dy/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x-dx/2.0),(y-dy/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x+dx/2.0),(y+dy/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x+dx/2.0),(y-dy/2.0),0)) zz=zz+1 obj.SetPolygon(zzz, c4d.CPolygon(zz-1,zz-2,zz-4,zz-3)) zzz=zzz+1 # obj.Message(c4d.MSG_UPDATE) return obj def main(): plyobj = CreatePolygonObject() # doc.InsertObject(plyobj, None, None, True) c4d.EventAdd() if __name__=='__main__': main()