POV-Ray : Newsgroups : povray.advanced-users : #while loop help : #while loop help Server Time
30 Jul 2024 00:23:08 EDT (-0400)
  #while loop help  
From: Todd Taylor
Date: 1 Sep 2000 18:04:46
Message: <39b027fe$1@news.povray.org>
Hello all...:)

I am hoping this is the proper newsgroup (my first post,
at that.

I need a #while loop that places an object in a 2d grid
with say 5 objects in a row and 5 objects per column.

X  X  X  X  X
X  X  X  X  X
X  X  X  X  X
X  X  X  X  X
X  X  X  X  X

Essentially, I am placing a copy of an object 25 times
in a 5x5 grid.  However, the code below does not work:

For the keen ones amongst you, I am trying to create a
hexagonally tiled floor with the hexagons rounded at the
edges and a small amount of grout between each
hexagon.

David Fontaine has helped me greatly in getting me to
this point, but getting the hexagons to tile correctly has
been a major headache.  I suspect my "understanding"
of the #while - #end loops is not fully correct, although
I don't know where I am going wrong looking at code
and the help docs. :)

Any help is greatly appreciated. :)

Thanks!
Todd
tta### [at] netrelatedcom

#include "colors.inc"

camera {
        location <0,10,0.05>
        look_at <0,0,0>
        rotate <0,0,0>}

light_source { <4,4,-6> color rgb <1,1,1>}

#declare Tile = union {
  union{
   intersection {
      cylinder { <-.5,0,sqrt(3)/2>,<.5,0,sqrt(3)/2>,.1 }
      plane { x,0 rotate 30.01*y }
      plane { -x,0 rotate -30.01*y }
   }
   sphere{<.5,0,sqrt(3)/2>,.1}
  }
  union{
   intersection {
      cylinder { <-.5,0,sqrt(3)/2>,<.5,0,sqrt(3)/2>,.1 }
      plane { x,0 rotate 30.01*y }
      plane { -x,0 rotate -30.01*y }
      rotate 60*y
   }
   sphere{<.5,0,sqrt(3)/2>,.1 rotate 60*y}
  }

on{ 
   intersection {
      cylinder { <-.5,0,sqrt(3)/2>,<.5,0,sqrt(3)/2>,.1 }
      plane { x,0 rotate 30.01*y }
      plane { -x,0 rotate -30.01*y }
      rotate 120*y
   }
   sphere{<.5,0,sqrt(3)/2>,.1 rotate 120*y}
  }
  union{
   intersection {
      cylinder { <-.5,0,sqrt(3)/2>,<.5,0,sqrt(3)/2>,.1 }
      plane { x,0 rotate 30.01*y }
      plane { -x,0 rotate -30.01*y }
      rotate 180*y
   }
   sphere{<.5,0,sqrt(3)/2>
,.1 rotate 180*y}
  }
  union{
   intersection {
      cylinder { <-.5,0,sqrt(3)/2>,<.5,0,sqrt(3)/2>,.1 }
      plane { x,0 rotate 30.01*y }
      plane { -x,0 rotate -30.01*y }
      rotate 240*y
   }
   sphere{<.5,0,sqrt(3)/2>,.1 rotate 240*y}
  }
  union{
   intersection {
      cylinder { <-.5,0,sqrt(3)/2>,<.5,0,sqrt(3)/2>,.1 }
      plane { x,0 rotate 30.01*y }
      plane { -x,0 rotate -30.01*y }
      rotate 300*y
   }
   sphere{<.5,0,sqrt(3)/2>,.1 rotate 300*y}
  }
   prism { -.1,.1,7 <-1,0>,<-.5,sqrt(3)/2>,<.5,sqrt(3)/2>,
           <1,0>,<.5,-sqrt(3)/2>,<-.5,-sqrt(3)/2>,<-1,0> }
  pigment { color rgb<0,0,1> }
  finish { ambient .6 metallic reflection .6}
}

#declare grout_size=.05;
#declare TileWidth=2;
#declare RoundEdgeWidth=.05;
#declare Count1=-25;
#declare Count2=-25;

#while (Count1<=25)
 #while (Count2<=25)
  object { Tile
   translate
<Count1*(1.5*TileWidth+2*grout_size+2*RoundEdgeWidth),0,Count2*(sqrt(3)+2*gr
out_size+2*RoundEdgeWidth)>
  }
  #declare Count2=Count2+1;
 #end
 #declare Count1=Count1+1;
#end

union {
 plane {y,0
  pigment { color rgb<1,1,1> }
 }
 object

  Tile
 }
}


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.