""" Multi Layer Chua II Attraktor (c) Juergen Meier (www.3d-meier.de) 24.12.2021 """ import c4d import math a = 1.3 # Konstante Multi Layer Chua II Attraktor b = 0.11 # Konstante Multi Layer Chua II Attraktor c = 3.0 # Konstante Multi Layer Chua II Attraktor alpha = 9.0 # Konstante Multi Layer Chua II Attraktor beta = 14.286 # Konstante Multi Layer Chua II Attraktor m = [0.9/7, -3.0/7, 3.5/7, -2.7/7, 4.0/7, 2.4/7] c = [0.0, 1.0, 2.15, 3.6, 6.2, 9.0] def Fx(x): Summe = 0 for k in range(1,6): Summe=Summe+((m[k-1] - m[k])*(abs(x + c[k])-abs(x - c[k]))) h= m[5]*x+0.5*Summe return h def CreateSplineObject(): # Variablen und Konstanten Name = "Multi Layer Chua II Attractor" x0 = 0.1 # Startwerte y0 = -0.2 # Startwerte z0 = 0.3 # Startwerte Delta = 0.01 # Delta Wert fuer die Berechnung N = 150000 # Anzahl Punkte N0 = 10 # Anzahl Punke am Anfang verwerfen Abstand = 0.1 # Abstand zwischen zwei Punkten FaktorX = 100 # Skalierungsfaktor x FaktorY = 500 # Skalierungsfaktor y FaktorZ = 100 # Skalierungsfaktor z x = x0 # Startwerte zuweisen y = y0 # Startwerte zuweisen z = z0 # Startwerte zuweisen obj = c4d.BaseObject(c4d.Ospline) # Splineobjekt erzeugen obj.ResizeObject(N) # Groesse des Spline festlegen obj[c4d.SPLINEOBJECT_CLOSED] = False #obj[c4d.SPLINEOBJECT_TYPE] = c4d.SPLINETYPE_LINEAR obj[c4d.SPLINEOBJECT_TYPE] = c4d.SPLINETYPE_BSPLINE #obj[c4d.SPLINEOBJECT_TYPE] = c4d.SPLINETYPE_BEZIER obj.SetName(Name) xa = x0 ya = y0 za = z0 zz = 0 for i in range(0,N): dx= alpha * (y - Fx(x)) dy= x - y + z dz= -beta * y x=x + Delta * dx y=y + Delta * dy z=z + Delta * dz PP=math.sqrt((x-xa)*(x-xa)+(y-ya)*(y-ya)+(z-za)*(z-za)) if (i > N0): if (PP > Abstand): obj.SetPoint(zz, c4d.Vector(x*FaktorX, y*FaktorY, z*FaktorZ)) zz = zz + 1 xa = x ya = y za = z obj.ResizeObject(zz) obj.Message(c4d.MSG_UPDATE) return obj def main(): slinobj = CreateSplineObject() doc.InsertObject(slinobj, None, None, True) c4d.EventAdd() if __name__=='__main__': main()