|
|
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
|
|