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

Loops, seni e coseni in POV-Ray     
English English English
Français français
Deutsch Deutsch

Home
- POV-Ray Tutorial
   Loops,
   seni e coseni
   in POV-Ray
   1. Onde lineare
 >2. Gira e rigira...!
       Onde concentriche
   3. Tappeti volanti
                                              - Download

Seni e coseni strutturati in 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 {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
//----------- loop start Z :
#while ( Z < EndZ + Step)

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

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

  #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.25
   texture{
     pigment{color rgb<1,0.65,0.0>}
     finish {diffuse 0.9 phong 1}
    }// end of texture
 }// end of sphere

#declare E = 8;
#declare Z = -E;    // start value Z
#declare EndZ = E;  //   end value Z
#declare Step = 0.1;// step value
//------ loop start Z:
#while ( Z < EndZ + Step)

  #declare X = -E;    // start value X
  #declare EndX = E;  //   end value X
  //------- loop start X:
  #while ( X < EndX + Step)
    #declare R = sqrt( X * X + Z * Z);
    #if (R < E)
     object{ Ball
             translate<X,5/(R+1)*cos(2*R),Z>}
    #end // of "#if (R < E)"
  #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
top

© Friedrich A. Lohmüller, 2011
www.f-lohmueller.de