""" Coupled Logistic Map Startwerte 24.12.2020 """ import c4d # Variablen und Konstanten name = 'Coupled Logistic Map Startwerte' xMin = 0.0 xMax = 1.0 yMin = 0.0 yMax = 1.0 Nx = 400 # Anzahl Punkte x Ny = 400 # Anzahl Punkte y Nv = 100 # Anzahl Punkte verwerfen a = 0.03 # Konstante a b = 3.2 # Konstante b PVersion = 2 # Art der Punkte # 1 = Diagonal # 2 = Symmetrisch Faktor = 1000 # Skalierungsfaktor Punkte = [] # Punkte fuer die Berechnung speichern def Map_x(x,y): return (1-a)*b*(1-x)*x+a*b*(1-y)*y def Map_y(x,y): return (1-a)*b*(1-y)*y+a*b*(1-x)*x def Map_Test(x,y): if abs(abs(x)-abs(y)) < 0.1: return 1 else: return 2 def CreatePolygonObject(): # Polygonobjekt erzeugen obj = c4d.BaseObject(c4d.Opolygon) obj.ResizeObject((Nx+1)*(Ny+1), Nx*Ny) obj.SetName(name) # Segmentbreiten berechnen dx=(xMax-xMin)/(Nx-1) dy=(yMax-yMin)/(Ny-1) # Koordinaten fuer die spaetere Berechnung erzeugen for i in xrange(0,Nx): for j in xrange(0,Ny): Punkte.append(c4d.Vector(xMin+i*dx, yMin+j*dy, 0)) # Punkte erzeugen zz=0 # Zaehler zuruecksetzen for i in xrange(0,Nx+1): for j in xrange(0,Ny+1): # Berechnung der Koordinaten x=xMin+i*dx y=yMin+j*dy # Punkt fuer das Polygonobjekt speichern obj.SetPoint(zz, c4d.Vector((x-dx/2)*Faktor,(y-dy/2)*Faktor,0)) # Zaehler erhoehen zz=zz+1 # Polygone erzeugen zz=0 # Zaehler zuruecksetzen zzz=0 for i in xrange(0,Nx): for j in xrange(0,Ny): # Punkte fuer ein Quadrat definieren # Startwerte uebergeben xa = Punkte[zz][0] y = Punkte[zz][1] # Punkte verwerfen for k in xrange(0,Nv): # Neuen Wert berechnen x=Map_x(xa,y) y=Map_y(xa,y) # x Werte aktualisieren xa=x; # Status abfragen if Map_Test(x,y) == PVersion: P1=i*(Ny+1)+j P2=i*(Ny+1)+j+1 P3=(i+1)*(Ny+1)+j+1 P4=(i+1)*(Ny+1)+j # Quadrat speichern obj.SetPolygon(zzz, c4d.CPolygon(P1,P2,P3,P4)) zzz=zzz+1 # Zaehler erhoehen zz=zz+1 obj.Message(c4d.MSG_UPDATE) return obj def main(): plyobj = CreatePolygonObject() doc.InsertObject(plyobj, None, None, True) c4d.EventAdd() if __name__=='__main__': main()