implements a more uniform distribution of star positions and a progress bar

This commit is contained in:
tosh 2013-03-27 03:28:48 +01:00
parent a8df635c09
commit 8a1fd43437

View file

@ -9,13 +9,16 @@
# Input file generator for the starfield. # Input file generator for the starfield.
from random import random,randint from random import random,randint
from sys import argv from math import sqrt, hypot, atan2, pi, fmod, degrees
from sys import argv,stderr
n = 1000 n = 10
if len(argv) > 1: if len(argv) > 1:
n = int(argv[1]) n = int(argv[1])
bars_total, bars_prev = 77, 0
for i in range(n): for i in range(n):
# color # color
w = randint(30,randint(40,255)) w = randint(30,randint(40,255))
@ -23,7 +26,21 @@ for i in range(n):
g = max(0,min(255,w + randint(-20,60))) g = max(0,min(255,w + randint(-20,60)))
b = max(0,min(255,w + randint(-10,100))) b = max(0,min(255,w + randint(-10,100)))
# position # position
azi = random() * 360 x,y,z = random()*2-1,random(),random()*2-1
alt = random() * 90 l = sqrt(x*x + y*y + z*z)
print "%f %f #%02x%02x%02x" % (azi,alt,r,g,b) x /= l; y /= l; z /= l
xz = hypot(x,z)
azimuth = degrees(fmod(atan2(x,z)+pi,2*pi))
altitude = degrees(atan2(y,xz))
bars = round(bars_total*i/n)
if bars != bars_prev:
bars_prev = bars
bars = int(bars)
stderr.write('\r[%s%s]' % ('#' * bars, '-' * (bars_total-bars)))
print "%f %f #%02x%02x%02x" % (azimuth,altitude,r,g,b)
stderr.write('\r[%s]\n' % ('#' * bars_total,))