""" Rulkov Map 28.12.2021 (c) Juergen Meier (www.3d-meier.de) """ import c4d import math # Variablen und Konstanten Titel = 'Rulkov Map' # Name a = 4.005 # Konstante a b = 0.004 # Konstante b c = 0.004 # Konstante c Nv = 10000 # Anzahl Punkte verwerfen N = 110000 # Anzahl Punkte dx = 0.20 # Kantenlaenge Quadrat x0 = 1.1 # Startwert x y0 = 1.1 # Startwert y FaktorX = 1000 # Skalierungsfaktor FaktorY = 3500 # Skalierungsfaktor def CreatePolygonObject(): obj = c4d.BaseObject(c4d.Opolygon) obj.ResizeObject(4*N, N) obj.SetName(Titel) # Zaehler fuer Punkte setzten zz = 0 # Zaehler fuer Polygone setzten zzz = 0 # Startwerte uebergeben xa = x0 ya = y0 # Punkte verwerfen for i in xrange(0,Nv): # Neuen Wert berechnen x = a/(1 + xa*xa) + ya y = ya - b*xa - c # x Werte aktualisieren xa=x ya=y # Punkte berechnen for i in xrange(0,N): # Neuen Wert berechnen x = a/(1 + xa*xa) + y y = y - b*xa - c # x und y Werte aktualisieren xa=x ya=y # Polygon erzeugen obj.SetPoint(zz, c4d.Vector((x*FaktorX-dx/2.0),(y*FaktorY+dx/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x*FaktorX-dx/2.0),(y*FaktorY-dx/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x*FaktorX+dx/2.0),(y*FaktorY+dx/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x*FaktorX+dx/2.0),(y*FaktorY-dx/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()