Descrizioni ed esempi per POV-Ray di Friedrich A. Lohmüller ,
tradotto di Paolo Taraboi
English English English
Deutsch Deutsch

loops e seni Sui tappeti volanti

Seni e coseni strutturati in loops
- onde concentriche -

Sino ad ora abbiamo applicato la funzione sin(A) solo lungo l'asse X. Si ottiene un notevole effetto se moduliamo una funzione sin(A) ai punti Y di una sfera in relazione alla loro distanza dal centro La distanza di un punto dall'origine in un sistema di assi cartesiani si calcola col teorema di pitagora.

#declare Ball = sphere{<0,0,0>,0.25
                        texture{pigment{color rgb<1,0.65,0.0>}
                                finish {ambient 0.1 diffuse 0.9 phong 1}
                               }// end of texture
                       }// end of sphere

#declare Z = -5;    // start value Z
#declare EndZ = 5;  //   end value Z
#declare Step = 0.5;// step value

#while ( Z < EndZ + Step)//-------------- loop start Z

   #declare X = -5;   // start value X
   #declare EndX = 5; //   end value X
   #while ( X < EndX + Step)//------------ loop start X

      #declare R = sqrt(X*X + Z*Z); // calculazion della distanza dall'origine
      object{ Ball translate < X, sin(2*R), Z> } // modulato dipendente di R

   #declare X = X + Step; //next X  value
   #end // --------------------------------- loop end X

#declare Z = Z + Step; //next Z value
#end // ------------------------------------ loop end Z

 

Modificando come segue
#declare R = sqrt( X * X + Z * Z);
#if (R < 5)
object{Ball translate< X, cos(2*R), Z>}
#end
limitate la distanza tra l'asse Y ed R < 5 ed usate cos(A) invece del seno. Il risultato è quanto segue:

Riducendo il raggio ed aumentando la densità delle sfere si aumenta a dismisura il numero delle stesse. Nell'immagine seguente ci sono circa 20000 sfere per un'occupazione totale di 14 MB di RAM In più il valore y delle sfere è stato definito inversamente proporzionale alla distanza R dal centro dell'asse delle y.

#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 value Z
#declare EndZ = E;  //   end value Z
#declare Step = 0.1;// step value
#while ( Z < EndZ + Step)//-------------- loop start Z

  #declare X = -E;    // start value X
  #declare EndX = E;  //   end value X
  #while ( X < EndX + Step)//------------ loop start 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 value
  #end // --------------------------------- loop end X

#declare Z = Z + Step; // next Z value
#end // ----------------------------------- loop end Z

loops e seni Sui tappeti volanti

© Friedrich A. Lohmüller, 2004
email email: (legacy email redacted)
homepage:www.f-lohmueller.de