Catene

12 anelli orizzontali

Gli anelli sono distribuiti nel piano con un angolo di 30°

#include "colors.inc"
#declare gradi=0;
#while(gradi < 360)
    torus
    {
        1, 0.25
        pigment{ color Yellow }
        translate <+5,0,0>
        rotate <0,gradi,0>
    }
    #declare gradi=gradi+30;
#end
light_source{         
    <0,+5,-12>, 
    color White
}
camera{
    location <0,+5,-12>
    look_at <0,-1,0>
}

12 anelli verticali

Gli anelli sono ruotati opportunamente per disporli in verticale.
Osserva lo sfasamento di -15° rispetto alla serie precedente…

#include "colors.inc"
#declare gradi=-15;
#while(gradi < 360)
    torus
    {
        1, 0.25
        pigment{ color Cyan }
        rotate <90,90,0>
        translate <+5,0,0>
        rotate <0,gradi,0>
    }
    #declare gradi=gradi+30;
#end
light_source{
    <0,+5,-12>, 
    color White
}
camera{
    location <0,+5,-12> 
    look_at <0,-1,0> 
}

Catena

Sovrapponendo le due serie di anelli si ottiene la catena.

#include "colors.inc"
 
#declare gradi1=0;
#declare gradi2=-15;
#while(gradi1 < 360)
    torus
    {
        1, 0.25
        pigment{ color Yellow }
        translate <+5,0,0>
        rotate <0,gradi1,0>
    }
    #declare gradi1=gradi1+30;
    torus
    {
        1, 0.25
        pigment{ color Cyan }
        rotate <90,90,0>
        translate <+5,0,0>
        rotate <0,gradi2,0>
    }
    #declare gradi2=gradi2+30;
#end
 
light_source{ <0,+5,-12>, color White }
camera{ location <0,+5,-12> look_at <0,-1,0> }

Catena di 24 anelli

Il codice si può semplificare ulteriormente ruotando il singolo anello di 90° a ogni passo.

#include "colors.inc"
 
#declare gradi=0;
#declare angolo=0;
#while(gradi < 360)
    torus
    {
        1, 0.25
        pigment{ color White 
        rotate<angolo,angolo,0>
        translate<+5,0,0>
        rotate<0,gradi,0>
    }
    #declare gradi=gradi+15;
    #declare angolo=angolo+90;
#end
 
light_source{         <0,+5,-12>, color White    }
camera      { location<0,+5,-12> look_at<0,-1,0> }