|
English
Italiano |
Bisher wurde der Sinus nur in x-Richtung angewandt. Ein besonders reizvoller Effekt ergibt sich jedoch, wenn man die Sinus-Modulation der y-Lage der einzelnen Kugeln von ihrem Abstand von der y-Achse abhängig macht. Hierzu sei daran erinnert, daß der Abstand eines Punktes in kartesischen Koordinaten mittels Pythagoras zu berechnen ist (d.h. Abstand R = Wurzel aus (X Quadrat plus Z Quadrat)! ). #declare Ball = sphere{<0,0,0>,0.25 texture{pigment{color rgb<1,0.8,0>} finish {ambient 0.45 diffuse 0.55 phong 1} }// end of texture }// end of sphere #declare Z = -5; // Start-Wert Z #declare EndZ = 5; // End-Wert Z #declare Step = 0.5;// Schrittweite #while ( Z < EndZ + Step)//-------------- Schleifen-Anfang Z #declare X = -5; // Start-Wert X #declare EndX = 5; // End-Wert X #while ( X < EndX + Step)//------------ Schleifen-Anfang X #declare R = sqrt(X*X+Z*Z) //Berechnung des Abstands von der y-Achse object{ Ball translate <X,sin(2*R),Z> } //abhängig von R moduliert #declare X = X + Step; //next X-Wert #end // --------------------------------- Schleifen-Ende X #declare Z = Z + Step; //next Z-Wert #end // ------------------------------------ Schleifen-Ende Z
|
Mit |
Verkleinert man den Kugelradius und erhöht ihre Dichte so erhöht sich die Kugelzahl schnell beträchtlich - bei folgender Szene sind rund 20 000 Kugeln im Spiel und werden etwa 14 MB RAM benötigt. Zusätzlich wurde der y-Wert der Kugeln umgekehrt proportional zum Abstand R von der Mittelachse moduliert. #declare Ball = sphere{<0,0,0>,0.1 texture{pigment{color rgb<1,0.8,0>} finish {ambient 0.45 diffuse 0.55 phong 1}}} #declare E = 8; #declare Z = -E; // Start-Wert Z #declare EndZ = E; // End-Wert Z #declare Step = 0.1;// Schrittweite #while ( Z < EndZ + Step)//-------------- Schleifen-Anfang Z #declare X = -E; // Start-Wert X #declare EndX = E; // End-Wert X #while ( X < EndX + Step)//------------ Schleifen-Anfang X #declare R = sqrt( X * X + Z * Z); #if (R < E) object{Ball translate< X, 5/(R+1)*cos(2*R), Z>} #end #declare X = X + Step; // next X-Wert #end // --------------------------------- Schleifen-Ende X #declare Z = Z + Step; // next Z-Wert #end // ----------------------------------- Schleifen-Ende Z |
© Friedrich A. Lohmüller, 2004 email: (legacy email redacted) homepage: |