Descriptions and Examples for the POV-Ray Raytracer by Friedrich A. Lohmüller
logo
    3D Animations with POV-Ray
        Some basics and samples on animations.
Italiano Italiano
Français français
Deutsch Deutsch
Home
- 3D Animations Gallery
- POV-Ray Tutorial

  3D Animation Tutorial
   Index of Content
  0. Basic Knowledge
     1. Basic Sample
     2. From Images to Video
     3. Basic Terms
     4. Animation Commands  
  I. Cyclic Animations
     1. Rotating Objects
     1.2. Planets in Orbit
     1.3. Clock Animation
     2. Rotating Camera
     3. Western Wheel
         Problem
     3.1. Rolling Wheels
     4. Gears
     4.1. Roller Chain
     4.2. Bike Chain
     5. Swinging Pendulum
     5.1. Newton's Cradle
     6. Spiral Pendulum
     7. Connecting Rods
     8. Psychedelic
        + Op-Art
     9. Counters
        + Countdowns
    10. Folding of a Cube
  II. Animation Paths
      with Spline Curves
     1. Spline Curves
     2. Animation Paths
                                           

The Folding
of a Cube Net
How to animate the folding of geometric objects.

How to fold of a cube?
A cube consists of 6 squares folded against its neighbor square by 90°.
So we start by declaring a 'Square' object.
(First declare the according textures as you like it!)
// -------------------- dimensions
#declare D = 0.00001;
#declare S = 1;
#declare Rl = 0.02;// "edge" radius
#declare Rp = 0.04;//"point" radius
// ------------------------- square
// Quadrat, quadrato, carré
#declare Square =
union{
 // the corners
 union{
  sphere{ <0,0,0>, Rp }
  sphere{ <S,0,0>, Rp }
  sphere{ <S,0,S>, Rp }
  sphere{ <0,0,S>, Rp }
  texture{ Corner_Texture } }
 // the edges
 union{
  cylinder{ <0,0,0>,<S,0,0>, Rl }
  cylinder{ <S,0,0>,<S,0,S>, Rl }
  cylinder{ <0,0,S>,<S,0,S>, Rl }
  cylinder{ <0,0,0>,<0,0,S>, Rl }
  texture{ Edge_Texture } }
 // the face
 box{ <0,-D,0>,<1,D,1>
  texture{ Face_Texture }}
} // end of union ------------------



Folding of a Cube
A square for folding of a Cube

Cube Net
A net of a cube

Building a chain of squares:
For folding a cube net (like here above right)
we have to make a chain of the squares A,B,C and D by nested unions.
We need to remember that rotation by 'rotate' always turns around the axes!
So we first have to apply the rotation and then the translation as shown in the image here right with the first two squares A and B.
Note: 'rotation around an axis' and 'translation' commonly are not commutative or not interchangeable, that means: We cannot change the sequence arbitrary!



Here how to animate the folding:
To achieve a smooth starting and ending movement we use the following macro:
#macro Cos_010( X ) //-----
  (0.5-0.5*cos(2*pi*X))
#end //--------------------
#declare Fold_Angle =
    -90*Cos_010(clock);
//---------------------------------

The assembling of the cube components:
union{ // A + B + C
  object{ Square } // C ------
  union{ // A + B
     object{ Square } // B ------
     object{ Square   // A ------
             rotate<Fold_Angle,0,0>
             translate<0,0,S>
           } //--------------
     rotate<Fold_Angle,0,0>
     translate<0,0,S>
  } // end A + B
  rotate<Fold_Angle,0,0>
  translate<0,0,S>
} // end A + B + C

object{ Square } // D ------
object{ Square   // E ------
        translate<-S,0,0>
        rotate<0,0,Fold_Angle>
      } //------------------
object{ Square   // F ------
        rotate<0,0,-Fold_Angle>
        translate<S,0,0>
      } //------------------

Folding_a_Cube
Folding a cube: rotate, move, add next!

Cos_010()
The macro 'Cos_010(...)'
Folding_a_Cube
Folding a cube
Scene descriptions for POV-Ray:
"Folding_a_Cube_2.ini" and
"Folding_a_Cube_2.pov"
For other samples for folding a regular polyhedron see:
Elementary Geometry for Raytracing or: 3D-Animations - Geometry
top

© Friedrich A. Lohmüller, 2010
email email: Friedrich.Lohmueller_at_t-online.de
homepage:http://www.f-lohmueller.de