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.
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:
n = int(argv[1])
bars_total, bars_prev = 77, 0
for i in range(n):
# color
w = randint(30,randint(40,255))
@ -23,7 +26,21 @@ for i in range(n):
g = max(0,min(255,w + randint(-20,60)))
b = max(0,min(255,w + randint(-10,100)))
# position
azi = random() * 360
alt = random() * 90
print "%f %f #%02x%02x%02x" % (azi,alt,r,g,b)
x,y,z = random()*2-1,random(),random()*2-1
l = sqrt(x*x + y*y + z*z)
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,))