""" Neovius Implizit 11.05.2020 """ import c4d import math # Variablen und Konstanten dialog_title = 'Neovius Implizit' a = 1*math.pi xMin = -a # Bereich x xMax = a # Bereich x yMin = -a # Bereich y yMax = a # Bereich y zMin = -a # Bereich z zMax = a # Bereich z Nx = 200 # Anzahl Punkte x Ny = 200 # Anzahl Punkte y Nz = 200 # Anzahl Punkte z Faktor = 100/math.pi # Skalierungsfaktor def CreatePolygonObject(): # Polygonobjekt erzeugen obj = c4d.BaseObject(c4d.Opolygon) obj.ResizeObject((Nx+1)*(Ny+1)*(Nz+1)*8, Nx*Ny*80) obj.SetName(dialog_title) # Variablen zz=0 # Zaehler fuer Punkte zzz=0 # Zaehler fuer Polygone # Segmentbreiten berechnen dx=(xMax-xMin)/Nx dy=(yMax-yMin)/Ny dz=(zMax-zMin)/Nz # Halbe Breite W dw=0.5*dx # Punkte erzeugen for i in xrange(0,Nx+1): for j in xrange(0,Ny+1): for k in xrange(0,Nz+1): # Berechnung der Parameter x=xMin+i*dx y=yMin+j*dy z=zMin+k*dz neovius=3*(math.cos(x)+math.cos(y)+math.cos(z))+4*math.cos(x)*math.cos(y)*math.cos(z) if abs(neovius) < 0.05: # Punktanfang (erster Punkt des Wuerfels) pa=zz # Punkte fuer Wuerfel speichern obj.SetPoint(zz, c4d.Vector((x-dw)*Faktor,(z-dw)*Faktor,(y-dw)*Faktor)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x+dw)*Faktor,(z-dw)*Faktor,(y-dw)*Faktor)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x+dw)*Faktor,(z-dw)*Faktor,(y+dw)*Faktor)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x-dw)*Faktor,(z-dw)*Faktor,(y+dw)*Faktor)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x-dw)*Faktor,(z+dw)*Faktor,(y-dw)*Faktor)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x+dw)*Faktor,(z+dw)*Faktor,(y-dw)*Faktor)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x+dw)*Faktor,(z+dw)*Faktor,(y+dw)*Faktor)) zz=zz+1 obj.SetPoint(zz, c4d.Vector((x-dw)*Faktor,(z+dw)*Faktor,(y+dw)*Faktor)) zz=zz+1 # Polygone des Wuerfels setzen obj.SetPolygon(zzz, c4d.CPolygon(pa,pa+1,pa+2,pa+3)) zzz=zzz+1 obj.SetPolygon(zzz, c4d.CPolygon(pa+4,pa+5,pa+6,pa+7)) zzz=zzz+1 obj.SetPolygon(zzz, c4d.CPolygon(pa,pa+1,pa+5,pa+4)) zzz=zzz+1 obj.SetPolygon(zzz, c4d.CPolygon(pa+1,pa+2,pa+6,pa+5)) zzz=zzz+1 obj.SetPolygon(zzz, c4d.CPolygon(pa+2,pa+3,pa+7,pa+6)) zzz=zzz+1 obj.SetPolygon(zzz, c4d.CPolygon(pa+3,pa,pa+4,pa+7)) 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()