-- get positions needed to cast horoscope function printplanet(name) planet = celestia:find(name) p_pos = marsframe:to(planet:getposition()) p_vec = p_pos - o_pos printvector(name, p_vec:normalize()) end function printvector(string, vec) if vec:length() < 0.5 then celestia:print("vector error") end positions:write(string .. " x=" .. vec.x .. " y=" .. vec.y .. " z=" .. vec.z.. "\n") -- celestia:print(string .. " x=" .. vec.x .. " y=" .. vec.y .. " z=" .. vec.z,20) end celestia:requestsystemaccess() wait(0) positions = io.open("/Users/dmm/documents/magic/astrology/points.txt", "w") mars = celestia:find("Mars") marsframe = celestia:newframe("equatorial", mars) obs = celestia:getobserver() o_pos = marsframe:to(obs:getposition()) horizon_normal = o_pos - marsframe:to(mars:getposition()) printvector("horizon_normal", horizon_normal:normalize()) planet_list = {"Sol", "Mercury", "Venus", "Earth", "Phobos", "Deimos", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"} for i,v in ipairs(planet_list) do printplanet(v) end -- find retrograde motion current_time = celestia:gettime() celestia:settime(current_time - 1) for i,v in ipairs(planet_list) do positions:write("yesterday_") printplanet(v) end celestia:settime(current_time + 1) for i,v in ipairs(planet_list) do positions:write("tomorrow_") printplanet(v) end celestia:settime(current_time) positions:close()