mirror of
https://github.com/lubosz/overte.git
synced 2025-08-08 04:08:13 +02:00
adds meridians with color gradient and an equator
This commit is contained in:
parent
dde8b7dee5
commit
891194ed2e
1 changed files with 29 additions and 7 deletions
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue