""" Planar Enneper Literatur 109 11.05.2020 """ import c4d import math # Variablen und Konstanten dialog_title = 'Planar Enneper' n=9 # Konstante n A=0.4 # Konstante A uMin = -0.40 # Bereich u uMax = 0.11 # Bereich u vMin = -math.pi # Bereich v vMax = math.pi # Bereich v Nu = 25 # Anzahl Punkte u Nv = 300 # Anzahl Punkte v Faktor = 100 # Skalierungsfaktor def CreatePolygonObject(): # Polygonobjekt erzeugen obj = c4d.BaseObject(c4d.Opolygon) obj.ResizeObject((Nu+1)*(Nv+1), Nu*Nv) obj.SetName(dialog_title) # Variablen zz=0 # Zaehler # Segmentbreiten berechnen du=(uMax-uMin)/Nu dv=(vMax-vMin)/Nv # Punkte erzeugen for i in xrange(0,Nu+1): for j in xrange(0,Nv+1): # Berechnung der Parameter u=uMin+i*du v=vMin+j*dv # Berechnung der Koordinaten # a=n/2.0 # B=n+1 C=math.exp(n*u)/(2*n+2) D1=-(math.exp(-(n+1)*u)*math.cos(v))/A D2=(math.exp(-(n+1)*u)*math.sin(v))/A E1=(A*math.exp((n+1)*u)*math.cos((2*n+1)*v))/(2*n+1) E2=(A*math.exp((n+1)*u)*math.sin((2*n+1)*v))/(2*n+1) # F=-2*math.cos(n*v)/n x=C*(D1-E1) z=C*(D2+E2) y=-(math.exp(n*u)*math.cos(n*v))/(n*(n+1)) # Punkt speichern obj.SetPoint(zz, c4d.Vector(x*Faktor,y*Faktor,z*Faktor)) # Zähler erhöhen zz=zz+1 # Polygone erzeugen zz=0 # Zähler zurücksetzen for j in xrange(0,Nv): for i in xrange(0,Nu): # Punkte für ein Quadrat definieren P1=i*(Nv+1)+j P2=i*(Nv+1)+j+1 P3=(i+1)*(Nv+1)+j+1 P4=(i+1)*(Nv+1)+j # Quadrat speichern obj.SetPolygon(zz, c4d.CPolygon(P1,P2,P3,P4)) # Zähler erhöhen zz=zz+1 # obj.Message(c4d.MSG_UPDATE) return obj def main(): plyobj = CreatePolygonObject() doc.InsertObject(plyobj, None, None, True) c4d.EventAdd() if __name__=='__main__': main()