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)
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,
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')
# 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)
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()