POV-Ray : Newsgroups : moray.win : Equally distributed lights : Re: Equally distributed lights Server Time
28 Jul 2024 16:30:05 EDT (-0400)
  Re: Equally distributed lights  
From: Warp
Date: 17 Apr 2000 03:02:33
Message: <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

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