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
                                       
 
3xfishblobs

Threefold Fishblob

Objects: "torus", "Segment_of_Torus"-Makro aus "shapes3.inc".
Methods: "#declare", "union{...}", "object{...}"
Click here for an example!
The construction in details:
How to calculate the radius Ri
of the inner circles:

The radius of the inner circles is called here Ri.
The radius of the outer circle is called here Ra.

Look at the opposite image:
Line MP = Ri (violet).
Line OP = sqrt(3)/3 * Ri (cyanblue).
  ( tan(30°) = sqrt(3)/3 ).
Line OM (red) = Line OQ (yellow).
Line OQ = 2*sqrt(3)/3 * Ri (yelow).
If we call the outer radius Ra, we will have:
Ra = Line QS + Line OQ.
Also:
Ra = Ri + 2*sqrt(3)/3 * Ri,
or:
Ra = Ri * ( 1 + 2*sqrt(3)/3 ).
On the other side we get the inner radius Ri from a given outer radius Ra as follows:
Ri = Ra / ( 1 + 2*sqrt(3)/3 ).
How to define the radius Ri of the inner circles?
The green segment of a torus must be rotated by 120 and 240 degrees.
In the following part we use the "#macro Segment_of_Torus( R_major, R_minor, Segment_Angle)" from my inlude file. This file must be included in the scene file text by #include "shapes3.inc"!
 
#declare R0 = 0.07;
// minor radius of all circles
#declare M  = <0,0,0>;
// center of the outer circle
// Threefold Fish
#declare Ra = 3.00-R0;
// radius of the circle 1
#declare Ri = Ra/(1+2/3*sqrt(3));
// radius of inner circles
#declare Mi = <0,-Ra+Ri,0>;
// center of the inner circle
#declare S_3_Angle =  210 ;
// segment angle  torus
// outer ring:
torus { Ra,  R0
     rotate<90,0,0>
     translate M
   } // end of torus  -----
// 3 torus segments:
#include "shapes_lo.inc"
#declare Segment =
object{
  Segment_of_Torus(Ri,R0,-S_3_Angle)
  rotate<-90, 0, 60>
  translate Mi
} // end of Torus_Segment(...)

object{ Segment rotate<0,0,  0>}
object{ Segment rotate<0,0,120>}
object{ Segment rotate<0,0,240>}
//------------------------- end
Scene description
for POV-Ray:
".txt" file or ".pov" file
 
top

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