  #version 3.7;
  #include "colors.inc"

  global_settings {
    assumed_gamma 1.8
  }

  camera {
    right x*1280/720
    location <-25, -75.1, -60>
    look_at 0.1
    angle 30
  }

  background { color rgb <.46, .09, .06> }

  light_source { <300, 300, -1000> White }

  #declare half_torus = difference {
    torus {
      4,1
      sturm
      rotate x*-90  // so we can see it from the top
    }
    box { <-5, -5, -1>, <5, 0, 1> }
  }
  #declare chain_segment = cylinder { <0,4,0>, <0,-4,0>, 1  }

  #declare flip_it = x*180;
  #declare torus_trans = 8;
  #declare link_trans = torus_trans*2-2*y;

  #declare chain_texture = texture {
    pigment { color rgb <.49, .56, .59> }
    finish {
      ambient .1
      diffuse .4
      reflection .35
      specular 1
      metallic
    }
  }

  #declare chain_link = union {
    object  { half_torus                     translate  y*torus_trans/2 }
    object  { half_torus     rotate flip_it  translate -y*torus_trans/2 }
    object  { chain_segment                  translate  x*torus_trans/2 }
    object  { chain_segment                  translate -x*torus_trans/2 }
    translate y*60
  }

  #declare chain = union {    // needs loop with random range
    object { chain_link }                                         // 0
    object { chain_link translate -y*link_trans   rotate y*78  }  // 90
    object { chain_link translate -y*link_trans*2 rotate y*8   }  // 0
    object { chain_link translate -y*link_trans*3 rotate y*112 }  // 90
    object { chain_link translate -y*link_trans*4 rotate y*-10 }  // 0
    object { chain_link translate -y*link_trans*5 rotate y*90  }  // 90
    object { chain_link translate -y*link_trans*6 rotate y*18  }  // 0
    object { chain_link translate -y*link_trans*7 rotate y*72  }  // 90
    texture { chain_texture }
  }

//======= RENDER
  object { chain scale .45 }
  object { chain scale .45 translate < 10, -10, -20 > rotate y*20 }
  object { chain scale .45 translate < 10, 30, 20 > rotate y*30 }

