import globe, contour, display, solar; EARTH = 6378137; // earth radius (m) cbar = colorbar([0, 0, 204.0/255, 204.0/255, 102.0/255], [102.0/255, 1, 1, 153.0/255, 0 ], [102.0/255, 0, 204.0/255, 0, 0 ], [356, 360, 364, 368, 372], 2, 0); cbar:position(0.15, 0.95, 0.7, 0.02); cbar:labeldigits(0, false); cbar:color(1, 1, 1); scale = 1; R = 300 * scale; fontsize = 11 * scale; gridwidth = 1 * scale; orbitwidth = 1.5 * scale; gridcolor = 0.3; coastcolor = 0.3; cbar:font(fontsize); G = globe_texture(R, 20, "tmp/co2-day105.png"); light = G.light; light:ambient(0.2, 0.2, 0.2); render = G.render; render:color(0, 0, 0); grid = G.grid; grid:color(gridcolor, gridcolor, gridcolor); grid:solid(gridwidth); root = G.root; root:add(cbar); coastline = globe_coast(R, "data/gshhs_c.b"); node = G.node; node:add(coastline); coastline:color(coastcolor, coastcolor, coastcolor); coastline:solid(gridwidth); line = zegraph("line"); vert = zegraph("vertex"); norm = zegraph("vertex"); rgba = zegraph("color"); line:type("strip"); line:solid(orbitwidth); line:vertex(vert); line:normal(norm); line:color(rgba); line:rotatez(100); node:add(line); D = matrix("double"); D:readtext("tmp/LLA.txt"); X = D[null,0]; Y = D[null,1]; Z = D[null,2]; HH = D[null,4]; MI = D[null,5]; DD = cal2jul(2008, 8, 2) - cal2jul(2008, 1, 1); A = solar_alt(DD, HH, MI, X, Y); // solar altitude Z += 0.001 * EARTH; Z /= 0.001 * EARTH; Z *= R; a = globe_projection(Z, X, Y); X = a[0]; Y = a[1]; Z = a[2]; X:insert(1, Y); X:insert(2, Z); p = X:ptr(); vert:add(p[0], p[1]); X /= R; norm:add(p[0], p[1]); I = A > 0; // night-time obit HH *= 0; RE = HH + 0.0; GR = HH + 0.4; BL = HH + 0.4; // day-time obit RE[I] = 1; GR[I] = 1; BL[I] = 1; RE:insert(1, GR); RE:insert(2, BL); RE:insert(3, 1); p = RE:ptr(); rgba:add(p[0], p[1]); rotatex = -50; rotatez = -160; node:rotatex(rotatex); node:rotatez(rotatez); //render:tofile("gosat105.bmp"); animate(render, node, rotatex, rotatez);