Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
logo
    3D Animationen mit POV-Ray
        Grundlagen und Beispiele zu Animationen.
English English English
Italiano Italiano
Français français
Home
- Animationen Galerie
- POV-Ray Tutorial

  3D Animation
  Inhaltsübersicht
  0. Grundlagen
     1. Beispiel
     2. Beispiel 2
     3. Bilder zu animierte Gif
     4. Von Bildern zum Video
     5. Grundbegriffe
     6. Animationsbefehle
  I. Zyklische Animationen
     1. Objekt-Rotation
     1.2. Planeten im Orbit
     1.3. Animierte Uhr
     2. Kamera-Rotation
     2.1. Kamera Geradeausflug
     3. Western-Kutschen
        -Problem
     3.1. Rollende Räder
     4. Zahnradgetriebe
     4.1. Rollende Kette
     4.2. Fahrradkette
     5. Pendelschwingung
  > 5.1. Newtonpendel
     5.2: Schaukelstuhl
     6. Federpendel
     7. Koppelstange
     7.1. Pleuelstange
     8. Psychedelic + Op-Art
     9. Zähler + Countdowns
    10. Faltung eines Würfels
  II. Nichtlineare Bewegungen
     1.0 Beschleunigung
          +Bremsen 1
     1.1 Beschleunigung
          + Bremsen 2
     2. Fallen + Hüpfen
     3. Beschleunigung nach
          physikalischen Formeln
     4. Geschwindigkeitssteuerung
          mit Spline-Funktionen
  III. Animationspfade
      mit Spline-Kurven
     1. Spline-Kurven
     2. Geschlossene Splines
     3. Animationspfade
                                                     
   

Newtonpendel, Newtonpendel,

Kugelpendel, Newton-Wiege (Newton's Cradle).


Newtonpendel, Newtonpendel
Der Rahmen:
Für die gebogenen Eckrohre können wir das Makro "Segment_of_Torus(...)" aus meiner Include-Datei "shapes3.inc" verwenden.
Der Rahmen wird hier als Makro definiert:
//------------------
#ifndef ( Shapes_Lo_Inc_Temp )
#include "shapes_lo.inc"
#end

Newtons_Cradle_Frame
Der Rahmen eines Newtonpendels
//---------------------------------------------------------------
#macro Newtons_Cradle_Frame ( R_min, // minor radius
                              R_maj, // major radius
                              Frame_H, // height in y
                              Frame_W, // width in x
                              Frame_L //  length in z
                            ) //-------------------------
#if (R_maj <= R_min) #local R_maj= R_min+D; #end
//-----------------------------------------------------
#local F_H = Frame_H -2*R_min ; // inner height in y
#local F_W = (Frame_W -2*R_min)/2 ; // inner width in x
#local F_L = (Frame_L -2*R_min)/2 ; // inner length in z


#local F_Quart = // -----------------------------
object{ Segment_of_Torus( R_maj,R_min, 90) } //
// ----------------------------------------------
union{
// tubes in x
 cylinder{<-(F_W-R_maj),0,0>,<(F_W-R_maj),0,0>,R_min translate<0,0,-F_L>}
 cylinder{<-(F_W-R_maj),0,0>,<(F_W-R_maj),0,0>,R_min translate<0,0, F_L>}
// tubes in z
 cylinder{<0,0,-(F_L-R_maj)>,<0,0,(F_L-R_maj)>,R_min translate< F_W,F_H,0>}
 cylinder{<0,0,-(F_L-R_maj)>,<0,0,(F_L-R_maj)>,R_min translate<-F_W,F_H,0>}
// tubes vertical
 cylinder{<0,R_maj,0>,<0,F_H-R_maj,0>,R_min translate< F_W,0, F_L>}
 cylinder{<0,R_maj,0>,<0,F_H-R_maj,0>,R_min translate< F_W,0,-F_L>}
 cylinder{<0,R_maj,0>,<0,F_H-R_maj,0>,R_min translate<-F_W,0, F_L>}
 cylinder{<0,R_maj,0>,<0,F_H-R_maj,0>,R_min translate<-F_W,0,-F_L>}

// round tube corners:
// low
 object{ F_Quart rotate<-90, 0, 0> translate< F_W-R_maj,R_maj,-F_L>}
 object{ F_Quart rotate<-90, 0, 0> translate< F_W-R_maj,R_maj, F_L>}
 object{ F_Quart rotate<-90,180,0> translate<-F_W+R_maj,R_maj,-F_L>}
 object{ F_Quart rotate<-90,180,0> translate<-F_W+R_maj,R_maj, F_L>}
// high
 object{ F_Quart rotate< 90, 90,0> translate< F_W,F_H-1*R_maj,-F_L+R_maj>}
 object{ F_Quart rotate< 90,-90,0> translate< F_W,F_H-1*R_maj, F_L-R_maj>}
 object{ F_Quart rotate< 90, 90,0> translate<-F_W,F_H-1*R_maj,-F_L+R_maj>}
 object{ F_Quart rotate< 90,-90,0> translate<-F_W,F_H-1*R_maj, F_L-R_maj>}
translate<0,R_min,0>
} // end of union ---------------------------------------------------------
#end // ------------------------------------------------------ end of macro


Ein einzelnes Kugelpendel:
Die Pendel werden ebenso als Objekte durch Makros definiert:
// -------------------------------------
#macro Newtons_Cradle_Ball( Ball_R, // radius sphere
                            Wire_R, // radius wire
                            Ball_H, // depth sphere
                            Frame_X // Frame_width
                          ) //-------------------------
union{
 sphere{<0,0,0>, Ball_R translate<0,-Ball_H-Ball_R,0>}
 cylinder{<-Frame_X/2,0,0>,<-Ball_R/5,-Ball_H,0>,Wire_R}
 cylinder{< Frame_X/2,0,0>,< Ball_R/5,-Ball_H,0>,Wire_R}
 sphere{<0,0,0>,Ball_R/5 translate<0,-Ball_H,0>}
} // end of union --------------------------------
#end // ----------------------------- end of macro

Newton's Cradle Ball
Ein Kugelpendel
vom Newton-Pendel

Rahmen mit im Sinus-Rythmus schwingenden Pendeln:
// ----------- dimensions:
#declare Frame_R_min  = 0.03;
#declare Frame_R_maj  = 0.15;
#declare Frame_Height = 1.40;
#declare Frame_Width  = 1.20;
#declare Frame_Length = 1.90;

#declare Ball_R = 0.15;
#declare Ball_H = 1.00;
#declare Wire_R = 0.015;

Newton's Cradle Animation
Animation Newton's Cradle
Szenen-Beschreibungstext für POV-Ray:
"Newtons_Cradle_3.ini" und
"Newtons_Cradle_3.pov"
//------------------------------ Animations Settings:
// clock 0~1 set by animation ini file!
#declare Time = 0.00+clock;
#declare Amp = 50; //  Amplitude

#declare Ball_1_Rotate = Amp*sin(2*pi*Time)* (Time<=0.5) ;
#declare Ball_2_Rotate = Amp*sin(2*pi*Time)* (Time<=0.5) ;
#declare Ball_3_Rotate = Amp*sin(2*pi*Time)*1;// (Time>0.5) ;
#declare Ball_4_Rotate = Amp*sin(2*pi*Time)* (Time>0.5) ;
#declare Ball_5_Rotate = Amp*sin(2*pi*Time)* (Time>0.5) ;


//------------------------------------------------------------
#declare Ball = // ----------------------- single ball element
 object{ Newtons_Cradle_Ball( Ball_R, // Ball_R,
                              Wire_R, // Filament_R,
                              Ball_H, // Ball_H,
                              Frame_Width-2*Frame_R_min //in x
                            ) //-------------------------
         texture{ Polished_Chrome }
       }  // end of object -----------------------------------
//------------------------------------------------------------
// all together: ---------------------------------------------
union{
 object{Newtons_Cradle_Frame ( Frame_R_min,  // R_minor,
                               Frame_R_maj,  // R_major,
                               Frame_Height, // height in y
                               Frame_Width,  //  width in x
                               Frame_Length  // length in z
                             ) //------------------------------
         texture{ Polished_Chrome }
       }  // end of object -----------------------------------
 union{// all balls together and upward
  object{ Ball rotate<Ball_1_Rotate,0,0> translate<0,0,-4*Ball_R>}
  object{ Ball rotate<Ball_2_Rotate,0,0> translate<0,0,-2*Ball_R>}
  object{ Ball rotate<Ball_3_Rotate,0,0> translate<0,0, 0*Ball_R>}
  object{ Ball rotate<Ball_4_Rotate,0,0> translate<0,0, 2*Ball_R>}
  object{ Ball rotate<Ball_5_Rotate,0,0> translate<0,0, 4*Ball_R>}
 translate<0,Frame_Height-Frame_R_min,0> } // end balls
 //---------------------------------------------------------
} // ----------------------------- end of union
In dieser Animation sind 3 Kugeln in Bewegung.
Es ist an Ihnen herauszufinden wie man 1, 2 oder 4 Kugeln in's Spiel bringt! Viel Spaß!
 
Größere Animationen des Newtonpendels
findet man in meiner Galerie der 3D Animations - Oszillationen
.

top

© Friedrich A. Lohmüller, 2013
http://www.f-lohmueller.de