""" Sine Sine Map 30.12.2019 www.3d-meier.de """ import c4d import math # Variablen und Konstanten Titel = 'Sine Sine Map' # Name a = 2.1 # Konstante a Nv = 100 # Anzahl Punkte verwerfen N = 200000 # Anzahl Punkte berechnen dx = 4.0 # Kantenlaenge Quadrat x0 = 0.1 # Startwert x y0 = 0.1 # Startwert y Faktor = 1000 # Skalierungsfaktor def Map_x(x,y): return math.sin(x)-math.sin(a*y) def Map_y(x,y): return x 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 y = y0 # Punkte verwerfen for i in xrange(0,Nv): # Neuen Wert berechnen x=Map_x(xa,y) y=Map_y(xa,y) # x Werte aktualisieren xa=x; # Punkte berechnen for i in xrange(0,N): # Neuen Wert berechnen x=Map_x(xa,y) y=Map_y(xa,y) # x Werte aktualisieren xa=x; # Polygon erzeugen obj.SetPoint(zz, c4d.Vector((x*Faktor-dx/2.0),(y*Faktor+dx/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x*Faktor-dx/2.0),(y*Faktor-dx/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x*Faktor+dx/2.0),(y*Faktor+dx/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x*Faktor+dx/2.0),(y*Faktor-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()