Descriptions and Examples for the POV-Ray Raytracer by Friedrich A. Lohmüller
    POV-Ray Examples - How To Make Objects for POV-Ray
Italiano Italiano
Français français
Deutsch Deutsch

Home
- POV-Ray Tutorial

  - POV-Ray Examples
   Index of Content
  - Geometry
    - Pawn
    - Wireframe Cube
    - Octagon
    - Egg Shape
    - Star
    - Optical Lens
    - Chessboard
    - Regular Tetrahedron
    - Penrose Triangle
    - Yin & Yang
    - Fishblob
    - Threefold
    - Trefoil
  - Architecture

  - Engineering
                                               
 
Penrose Triangle

Penrose Triangle

The construction of an "impossible triangle" - a Penrose triangle or Penrose tribar.
Know from Oscar Reutersvärd (Swedish artist), Roger Penrose (British mathematician), M.C. Escher's lithograph Waterfall and many others.
An example for the using of the "orthographic camera" for isometric projection.
Objects:   "box".
Methods: "#declare","union", "intersection".
Click here for an example!

The effect of the Penrose Triangle is based on the Isometric Projection.
To realize this kind of projection with POV-Ray, we need to use the orthographic camera with a point of view diagonal to the axes:
camera{ //-------------------------- 
   orthographic
   location  < 10, 10,-10>
   right  x*image_width/image_height
   angle    5
   look_at <0,0,0>
} //-------------------------------- 
A cube in isometric projection.

The Construction of the Penrose Triangle: There are two ways to make an impossible triangle, see the animations in the following images.
Here how to make it by cutting with planes (2nd way):

//-----------------------------------
#declare Length   = 1;
#declare Diameter = 0.15;
// internals:
#declare R = Diameter/2;
#declare L = Length - 2*R;
//-----------------------------------
#declare Triangle_Texture =
texture{ pigment{ color rgb<1,.9,.3>}
         finish { phong 1 }
       } // end of texture
//-----------------------------------
#declare Element =
box { <-R,-R,-R>,< L+R, R, R>
      texture {Triangle_Texture}
      no_shadow
    } // end of box
//-----------------------------------
#declare Element_Cut =
intersection{
 object{ Element }
 plane{ <1,0,0>,0
        rotate<0,45,0>
        translate<L/2,0,0>
        texture {Triangle_Texture} }
} // end difference
//-----------------------------------
#declare Penrose_Triangle =
union{
object{ Element_Cut rotate<0,-90, 0>}
object{ Element     rotate<0,  0,90>}
object{ Element     rotate<0,  0, 0>
                    translate<0,L,0>}
object{ Element_Cut rotate<0, 90, 0>
                    translate<L,L,0>}
no_shadow
} // end of union //----------------- 
 
Construction of a Penrose Triangle.
Construction of a Penrose Triangle.
Scene description for POV-Ray:
"Penrose_Triangle_1.pov" or "Penrose_Triangle_1.txt"
top
© Friedrich A. Lohmüller, 2009
www.f-lohmueller.de