|
|
Hi Warp and Rick,
Thanks for your replies.
I guessed this is not trivial. I'll give the area lights a try because of
the render time.
-C-H-A-R-L-E-S-
Warp <war### [at] tagpovrayorg> schrieb in im Newsbeitrag:
38fab709@news.povray.org...
> Charles <101### [at] germanynetde> wrote:
> : How can I build an array of equally ditributed point lights? They have
to be
> : on the surface of a sphere.
>
> I don't think there's any way of doing this kind of thing in moray
(unless
> you make your own plugin).
>
> : Perhaps I would have a better chance in POV directly, but I havn't found
a
> : formula.
>
> The problem of distributing points (approximately) evenly on the surface
> of a sphere is not trivial. Only certain amounts of points have an exact
> solution. Other amounts have to use only an approximation.
> Usually an approximation is good enough. If so, you can use this
algorithm:
>
> #declare Spread = .1;
> #declare mintheta = 0;
> #declare maxtheta = pi;
>
> camera { location <-4,1,-6>*.7 look_at 0 angle 35 }
> light_source { <50,100,-200> 1 }
>
> #declare dtheta = atan2(Spread,1);
>
> #declare R=seed(0);
> #declare theta=mintheta;
> #while(theta<maxtheta)
> #if(theta=0)
> #declare dphi=2*pi;
> #else
> #declare dphi=dtheta/sin(theta);
> #end
> #declare minphi= -pi + dphi*rand(R)*.5;
> #declare maxphi= pi - dphi/2 + (minphi+pi);
> #declare phi=minphi;
> #while(phi<maxphi)
> sphere
> { z,.05
> rotate x*degrees(theta)
> rotate z*degrees(phi)
> pigment { rgb x } finish { specular .5 }
> }
> #declare phi=phi+dphi;
> #end
> #declare theta=theta+dtheta;
> #end
>
>
> --
> main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
> ):5;i&&_>1;printf("%s",_-70?_&1?"[]":" ":(_=0,"\n")),_/=2);} /*- Warp -*/
Post a reply to this message
|
|