Esempio n. 1
0
from Quaternion import Quat

orbit_xyz = numpy.array([0., 0., -1000000e3])
p_earth_body = numpy.array([-11913349.37481491,   1600513.79810546,   6787847.04879577])
orbit_xyz = -p_earth_body

illums = []
illums2 = []
pitchs = numpy.linspace(0, 90.0, 45)
esa_directs = []
esa_refls = []

for pitch in pitchs:
    print pitch
    att = [0, pitch, 0]
    vis, illum, rays = taco.calc_earth_vis(orbit_xyz, att, n_radiator_x=3, n_radiator_y=4, ngrid=100, max_reflect=6)
    vis2, illum2, rays2 = taco2.calc_earth_vis(orbit_xyz, att, max_reflect=6)
    illums.append(illum)
    illums2.append(illum2)
    direct, refl, total = Chandra.acis_esa.earth_solid_angle(Quat(att), orbit_xyz)
    esa_directs.append(direct)
    esa_refls.append(refl)


clf()
plot(pitchs, [x[0] for x in illums] , '-b', label='tla direct')
plot(pitchs, [x[0] for x in illums2] , '--b', label='tla direct-2', linewidth=4)

plot(pitchs, [x[1] for x in illums] , '-r', label='tla refl1')
plot(pitchs, [x[1] for x in illums2] , '--r', label='tla refl1-2', linewidth=4)
Esempio n. 2
0
zs = []
triangles = []
for i, plane in enumerate(planes):
    xs.extend([plane.p0[0], plane.p1[0], plane.p2[0]])
    ys.extend([plane.p0[1], plane.p1[1], plane.p2[1]])
    zs.extend([plane.p0[2], plane.p1[2], plane.p2[2]])
    triangles.append((3 * i, 3 * i + 1, 3 * i + 2))

p_earth_body = numpy.array([-20000e3, 0, 30000e3])
p_earth_body = numpy.array(
    [-11913349.37481491, 1600513.79810546, 6787847.04879577])
att = [0, 0, 0]

vis, illum, outs = taco.calc_earth_vis(-p_earth_body,
                                       att,
                                       ngrid=30,
                                       to_earth=True,
                                       max_reflect=0)

mask_points = (len(outs) // 300) or None
rx = [out[0][0] for out in outs]
ry = [out[0][1] for out in outs]
rz = [out[0][2] for out in outs]
ru = [out[1][0] * (2 if out[3] else 1) for out in outs]
rv = [out[1][1] * (2 if out[3] else 1) for out in outs]
rw = [out[1][2] * (2 if out[3] else 1) for out in outs]

mlab.clf()
mlab.triangular_mesh(xs, ys, zs, triangles, color=(1, 1, 0), opacity=0.9)
mlab.triangular_mesh(xs,
                     ys,
Esempio n. 3
0
p_earth_body = np.array([-11913349.37481491,   1600513.79810546,   6787847.04879577])
orbit_xyz = -p_earth_body
orbit_xyz = np.array([0., 0., -100000e3])
orbit_xyz = np.array([0., 0., -10000e3])

illums = []
pitchs = numpy.linspace(0, 90.0, 30)
esa_directs = []
esa_refls = []

for pitch in pitchs:
    print pitch
    att = [0, 0, pitch]
    vis, illum, rays = taco.calc_earth_vis(orbit_xyz, att, ngrid=100,
                                           n_radiator_x=5, n_radiator_y=8,
                                           reflect_atten=0.9,
                                           max_reflect=3)
    illums.append(illum)
    direct, refl, total = Chandra.acis_esa.earth_solid_angle(Quat(att), orbit_xyz)
    esa_directs.append(direct)
    esa_refls.append(refl)


clf()
plot(pitchs, [x[0] for x in illums] , '-b', label='tla direct')
plot(pitchs, [x[1] for x in illums] , '-r', label='tla reflect 1')
plot(pitchs, [x[2] for x in illums] , '-m', label='tla reflect 2')
plot(pitchs, [x[3] for x in illums] , '-c', label='tla reflect 3')
plot(pitchs, [sum(x) for x in illums] , '-b', label='tla total', linewidth=3)

plot(pitchs, esa_directs, '--k', label='nraw direct')
Esempio n. 4
0
# slab_planes = taco.make_slab()
# slab_rads = taco.make_radiator2()

import numpy as np

def norm(vec):
    return vec / np.sqrt(np.sum(vec**2))

i = 0
# Chandra orbit position (ala orbit ephemeris X,Y,Z) (meters)
ra = 0.
dec = -90.0
for i, alt in enumerate(np.arange(1000e3, 1500e3, 1000e3)):
    p_chandra_eci = np.array([taco.Rad_Earth + alt, 0, 0]) 
    att = [ra, dec, 0.]
    vis, illum, rays = taco.calc_earth_vis(p_chandra_eci, att, ngrid=1000)
    print illum

    if 1:
        # figure(i)
        clf()
        blocked = vis == 0
        if len(blocked.nonzero()) > 0:
            pos = rays[blocked]
            plot(pos[:,1], pos[:,2], '.k')
        if len(vis) > 0:
            pos = rays[~blocked]
            plot(pos[:,1], pos[:,2], '.r')
        xlim(-1,1)
        ylim(-1,1)
Esempio n. 5
0
# slab_planes = taco.make_slab()
# slab_rads = taco.make_radiator2()

import numpy as np

def norm(vec):
    return vec / np.sqrt(np.sum(vec**2))

i = 0
# Chandra orbit position (ala orbit ephemeris X,Y,Z) (meters)
ra = 0.
dec = -90.0
for i, alt in enumerate(np.arange(1000e3, 1500e3, 1000e3)):
    p_chandra_eci = np.array([taco.Rad_Earth + alt, 0, 0]) 
    att = [ra, dec, 0.]
    vis, illum, rays = taco.calc_earth_vis(p_chandra_eci, att, ngrid=1000)
    print illum

    if 1:
        # figure(i)
        clf()
        blocked = vis == 0
        if len(blocked.nonzero()) > 0:
            pos = rays[blocked]
            plot(pos[:,1], pos[:,2], '.k')
        if len(vis) > 0:
            pos = rays[~blocked]
            plot(pos[:,1], pos[:,2], '.r')
        xlim(-1,1)
        ylim(-1,1)
Esempio n. 6
0
xs = []
ys = []
zs = []
triangles = []
for i, plane in enumerate(planes):
    xs.extend([plane.p0[0], plane.p1[0], plane.p2[0]])
    ys.extend([plane.p0[1], plane.p1[1], plane.p2[1]])
    zs.extend([plane.p0[2], plane.p1[2], plane.p2[2]])
    triangles.append((3*i, 3*i+1, 3*i+2))


p_earth_body = numpy.array([-20000e3,   0,   30000e3])
p_earth_body = numpy.array([-11913349.37481491,   1600513.79810546,   6787847.04879577])
att = [0, 0, 0]

vis, illum, outs = taco.calc_earth_vis(-p_earth_body, att, ngrid=30, to_earth=True, max_reflect=0)

mask_points = (len(outs) // 300) or None
rx = [out[0][0] for out in outs]
ry = [out[0][1] for out in outs]
rz = [out[0][2] for out in outs]
ru = [out[1][0] * (2 if out[3] else 1) for out in outs]
rv = [out[1][1] * (2 if out[3] else 1) for out in outs]
rw = [out[1][2] * (2 if out[3] else 1) for out in outs]

mlab.clf()
mlab.triangular_mesh(xs, ys, zs, triangles, color=(1, 1, 0), opacity=0.9)
mlab.triangular_mesh(xs, ys, zs, triangles, color=(1, .8, 0), representation='wireframe', line_width=4)
mlab.quiver3d(rx, ry, rz, ru, rv, rw, scale_factor=1.0, mask_points=mask_points, vmin=1, vmax=2)
mlab.show()