adds meridians with color gradient and an equator

This commit is contained in:
tosh 2013-03-27 17:05:23 +01:00
parent dde8b7dee5
commit 891194ed2e

View file

@ -12,16 +12,38 @@ from random import random,randint
from math import sqrt, hypot, atan2, pi, fmod, degrees from math import sqrt, hypot, atan2, pi, fmod, degrees
from sys import argv,stderr from sys import argv,stderr
hemisphere_only, equator, meridians= False, 1000, 1000
n = 10 n_random = 100000
if len(argv) > 1: if len(argv) > 1:
n = int(argv[1]) n_random = int(argv[1])
hemisphere=False
bars_total, bars_prev = 77, 0 bars_total, bars_prev = 77, 0
for i in range(n): def meridian(azimuth,n,(r0,g0,b0),(r1,g1,b1)):
alts = 180.0/n
for alti in range(n):
# color
altj = n-alti-1
r = (r0 *altj+alti* r1)/n
g = (g0 *altj+alti* g1)/n
b = (b0 *altj+alti* b1)/n
# position
altitude = alts*alti
print "%f %f #%02x%02x%02x" % (azimuth,altitude,r,g,b)
print "%f %f #%02x%02x%02x" % (azimuth,-altitude,r,g,b)
if meridians:
meridian(.2,meridians,(255,255,255), (180, 60,255)) # N->S
meridian(90,meridians,( 80,255, 80), (255,240, 40)) # E->W
if equator:
azis = 360.0/equator
for azii in range(equator):
azimuth = azis*azii
print "%f %f #%02x%02x%02x" % (azimuth,0,255,255,255)
for i in range(n_random):
# color # color
w = randint(30,randint(40,255)) w = randint(30,randint(40,255))
r = max(0,min(255,w + randint(-10,70))) r = max(0,min(255,w + randint(-10,70)))
@ -29,7 +51,7 @@ for i in range(n):
b = max(0,min(255,w + randint(-10,100))) b = max(0,min(255,w + randint(-10,100)))
# position # position
x,y,z = random()*2-1,random(),random()*2-1 x,y,z = random()*2-1,random(),random()*2-1
if not hemisphere: if not hemisphere_only:
y = y*2-1 y = y*2-1
l = sqrt(x*x + y*y + z*z) l = sqrt(x*x + y*y + z*z)
x /= l; y /= l; z /= l x /= l; y /= l; z /= l
@ -38,7 +60,7 @@ for i in range(n):
azimuth = degrees(fmod(atan2(x,z)+pi,2*pi)) azimuth = degrees(fmod(atan2(x,z)+pi,2*pi))
altitude = degrees(atan2(y,xz)) altitude = degrees(atan2(y,xz))
bars = round(bars_total*i/n) bars = round(bars_total*i/n_random)
if bars != bars_prev: if bars != bars_prev:
bars_prev = bars bars_prev = bars
bars = int(bars) bars = int(bars)