|
|
In article <3876546f@news.povray.org>, <msk### [at] msncom> wrote:
> Another method... if you can deal with a slight increase in parse time.
> Take the code you have and copy it so it appears twice in a
> row. Then take the first occurance and change it like this (I commented
> the "ADDED" lines to show which ones they were):
>
> #declare STEP=0.2;
>
> #declare NumLights = 0; // ADDED
>
> #declare M=-1;
> #while (M<=1)
> #declare N=-1;
> #while (N<=1)
> #declare O=-1;
> #while (O<=1)
> #declare NumLights = NumLights + 1; // ADDED
> #declare O=O+STEP;
> #end
> #declare N=N+STEP;
> #end
> #declare M=M+STEP;
> #end
>
> Then you can divide by NumLights. Just make sure STEP is the same in
> both sets of loops.
That won't work, you have to increment NumLights only for those
positions inside the sphere:
#declare M=-1;
#while (M<=1)
#declare N=-1;
#while (N<=1)
#declare O=-1;
#while (O<=1)
#if (vlength(<M,N,O>) <= 1 )
#declare NumLights = NumLights + 1;
#end
#declare O=O+STEP;
#end
#declare N=N+STEP;
#end
#declare M=M+STEP;
#end
Then you can use NumLights as the divider in the loop that places the
lights.
--
Chris Huff
e-mail: chr### [at] yahoocom
Web page: http://chrishuff.dhs.org/
Post a reply to this message
|
|