""" Circle 12-1 18.07.2022 (c) Juergen Meier (www.3d-meier.de) """ import c4d import random import math # Variablen und Konstanten Titel = 'Circle 12-1' # Name N = 10000000 # Anzahl Punkte Nv = 100 # Anzahl Punkte verwerfen dx = 5 # Breite Polygon dy = 5 # Hoehe Polygon Faktor = 1000 # Skalierungsfaktor k = [( 0.10, 0.00, 0.00, 0.20, 0.00, -1.00, 8.03), ( 0.09, -0.10, 0.05, 0.05, 0.50, -0.84, 8.03), ( 0.05, -0.17, 0.09, 0.09, 0.84, -0.50, 8.03), ( 0.00, -0.20, 0.10, 0.00, 1.00, 0.00, 8.03), (-0.05, -0.17, 0.09, -0.10, 0.84, 0.50, 8.03), (-0.09, -0.10, 0.05, -0.17, 0.50, 0.84, 8.03), (-0.10, 0.00, 0.00, -0.20, 0.00, 1.00, 8.03), (-0.09, 0.10, -0.05, -0.17, -0.50, 0.84, 8.03), (-0.05, 0.17, -0.09, -0.10, -0.84, 0.50, 8.03), ( 0.00, 0.20, -0.10, 0.00, -1.00, 0.00, 8.03), ( 0.05, 0.17, -0.09, 0.10, -0.84, -0.50, 8.03), ( 0.09, 0.10, -0.05, 0.17, -0.50, -0.84, 8.03)] def CreatePolygonObject(): obj = c4d.BaseObject(c4d.Opolygon) obj.ResizeObject(4*N, N) obj.SetName(Titel) # Startwert der Berechnung xa = 0.5 y = 0.5 # Zaehler fuer Punkte setzten zz = 0 # Zaehler fuer Polygone setzten zzz = 0 for i in xrange(0,Nv): zufall = random.randint(0,120) if zufall < 10: x = k[0][0]*xa + k[0][1]*y + k[0][4] y = k[0][2]*xa + k[0][3]*y + k[0][5] if (zufall >= 10) and (zufall < 20): x = k[1][0]*xa + k[1][1]*y + k[1][4] y = k[1][2]*xa + k[1][3]*y + k[1][5] if (zufall >= 20) and (zufall < 30): x = k[2][0]*xa + k[2][1]*y + k[2][4] y = k[2][2]*xa + k[2][3]*y + k[2][5] if (zufall >= 30) and (zufall < 40): x = k[3][0]*xa + k[3][1]*y + k[3][4] y = k[3][2]*xa + k[3][3]*y + k[3][5] if (zufall >= 40) and (zufall < 50): x = k[4][0]*xa + k[4][1]*y + k[4][4] y = k[4][2]*xa + k[4][3]*y + k[4][5] if (zufall >= 50) and (zufall < 60): x = k[5][0]*xa + k[5][1]*y + k[5][4] y = k[5][2]*xa + k[5][3]*y + k[5][5] if (zufall >= 60) and (zufall < 70): x = k[6][0]*xa + k[6][1]*y + k[6][4] y = k[6][2]*xa + k[6][3]*y + k[6][5] if (zufall >= 70) and (zufall < 80): x = k[7][0]*xa + k[7][1]*y + k[7][4] y = k[7][2]*xa + k[7][3]*y + k[7][5] if (zufall >= 80) and (zufall < 90): x = k[8][0]*xa + k[8][1]*y + k[8][4] y = k[8][2]*xa + k[8][3]*y + k[8][5] if (zufall >= 90) and (zufall < 100): x = k[9][0]*xa + k[9][1]*y + k[9][4] y = k[9][2]*xa + k[9][3]*y + k[9][5] if (zufall >= 100) and (zufall < 110): x = k[10][0]*xa + k[10][1]*y + k[10][4] y = k[10][2]*xa + k[10][3]*y + k[10][5] if zufall >= 110: x = k[11][0]*xa + k[11][1]*y + k[11][4] y = k[11][2]*xa + k[11][3]*y + k[11][5] xa = x for i in xrange(0,N): zufall = random.randint(0,120) if zufall < 10: x = k[0][0]*xa + k[0][1]*y + k[0][4] y = k[0][2]*xa + k[0][3]*y + k[0][5] if (zufall >= 10) and (zufall < 20): x = k[1][0]*xa + k[1][1]*y + k[1][4] y = k[1][2]*xa + k[1][3]*y + k[1][5] if (zufall >= 20) and (zufall < 30): x = k[2][0]*xa + k[2][1]*y + k[2][4] y = k[2][2]*xa + k[2][3]*y + k[2][5] if (zufall >= 30) and (zufall < 40): x = k[3][0]*xa + k[3][1]*y + k[3][4] y = k[3][2]*xa + k[3][3]*y + k[3][5] if (zufall >= 40) and (zufall < 50): x = k[4][0]*xa + k[4][1]*y + k[4][4] y = k[4][2]*xa + k[4][3]*y + k[4][5] if (zufall >= 50) and (zufall < 60): x = k[5][0]*xa + k[5][1]*y + k[5][4] y = k[5][2]*xa + k[5][3]*y + k[5][5] if (zufall >= 60) and (zufall < 70): x = k[6][0]*xa + k[6][1]*y + k[6][4] y = k[6][2]*xa + k[6][3]*y + k[6][5] if (zufall >= 70) and (zufall < 80): x = k[7][0]*xa + k[7][1]*y + k[7][4] y = k[7][2]*xa + k[7][3]*y + k[7][5] if (zufall >= 80) and (zufall < 90): x = k[8][0]*xa + k[8][1]*y + k[8][4] y = k[8][2]*xa + k[8][3]*y + k[8][5] if (zufall >= 90) and (zufall < 100): x = k[9][0]*xa + k[9][1]*y + k[9][4] y = k[9][2]*xa + k[9][3]*y + k[9][5] if (zufall >= 100) and (zufall < 110): x = k[10][0]*xa + k[10][1]*y + k[10][4] y = k[10][2]*xa + k[10][3]*y + k[10][5] if zufall >= 110: x = k[11][0]*xa + k[11][1]*y + k[11][4] y = k[11][2]*xa + k[11][3]*y + k[11][5] xa = x obj.SetPoint(zz, c4d.Vector((Faktor*x-dx/2.0),(Faktor*y+dy/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((Faktor*x-dx/2.0),(Faktor*y-dy/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((Faktor*x+dx/2.0),(Faktor*y+dy/2.0),0)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((Faktor*x+dx/2.0),(Faktor*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()