|
|
JWV is right. You'll have the same problem if you use some random noise in a
isosurface or a texture. I usually change #declare by #macro that are
processed at render time and not at parse time. Try this:
#macro pole()
cylinder{
<0,0,0>,<0,1,0>,.01
rotate <0,0,rand(R1)*360>
pigment{
rgb 1
}
finish{
ambient 1
}
}
#end
#declare c=100;
#while (c>0)
object{
pole()
translate <-1,0,0>
}
#declare c=c-1;
#end
.Groucho.
"JWV" <jwv|at|planet.nl> wrote in message news:41225d79@news.povray.org...
> hi,
>
> The problem is as follows:
>
> in the 1st version, where you declare the object first and rotate "within"
> the declare statement, it DOES rotate. But what you really want, is to
have
> it rotate randomly (?). This, it doesn't. It rotates around a fixed angle
> defined by the first (and only) time you use Rrand().
>
> in the 2nd version the angle is calculated EACH time the while loop
reaches
> Rrand(), and therefore the objects rotate around different angles.
>
> So, yes, what you see is perfectly correct :-).
>
> Hoping to be of help,
>
> JWV
>
>
> "N Shomber" <nsh### [at] hotmailcom> wrote in message
> news:41225b60$1@news.povray.org...
> > Hi,
> >
> > I was working on creating a scene for POV-Comp using POV-Ray
> > 3.6.1.icl8.win32 and came across this interesting behavior.
> >
> > I am trying to declare an object that is rotated at some random angle
> around
> > an axis. I need to create many of them so I declared a single instance
> > first then used a #while loop to create all of them.
> >
> > I've found that if I include my rotate in the declaration, it doesn't
make
> > it to the final object for some reason, but if I include it in the while
> > object declaration, it does. Is this what's supposed to happen?
> >
> > Sample code:
> >
> > #declare R1=seed(0);
> >
> > camera{
> > location <0,00,-3>
> > look_at <0,0,0>
> > }
> >
> > #declare pole=
> > cylinder{
> > <0,0,0>,<0,1,0>,.01
> > rotate <0,0,rand(R1)*360>
> > pigment{
> > rgb 1
> > }
> > finish{
> > ambient 1
> > }
> > }
> > ;
> >
> > #declare c=100;
> > #while (c>0)
> > object{
> > pole
> > translate <-1,0,0>
> > }
> > #declare c=c-1;
> > #end
> >
> > #declare c=100;
> > #while (c>0)
> > object{pole
> > rotate <0,0,rand(R1)*360>
> > translate <1,0,0>
> > }
> > #declare c=c-1;
> > #end
> >
> >
>
>
Post a reply to this message
|
|