;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Missão Artemis: acompanhe a viagem da cápsula Orion até a Lua em tempo real

Perspectiva artística da cápsula Orion se afastando da Terra após o lançamento da missão Artemis 1 - Nasa
Perspectiva artística da cápsula Orion se afastando da Terra após o lançamento da missão Artemis 1 Imagem: Nasa

Nicole D'Almeida

Colaboração para Tilt, em São Paulo

18/11/2022 14h55

O foguete SLS (Space Launch System ou Sistema de Lançamento Espacial) lançou, nesta quarta-feira (16), a cápsula Orion em direção à Lua, na primeira missão do programa Artemis, da Nasa, que tem como um dos objetivos levar humanos novamente para o nosso satélite.

A cápsula deve voltar à Terra no dia 11 de dezembro, em um pouso no oceano Pacífico. É possível acompanhar sua viagem de 25 dias pelo espaço em tempo real, em um site especial da agência espacial norte-americana, o AROW (Artemis Real-time Orbit Website).

Ele mostra uma animação em 3D da Orion no espaço, na qual acompanhamos o tempo da missão, a velocidade da cápsula e a distância da Terra e da Lua.

É possível alterar o que é exibido na tela — a cápsula, a Lua ou a Terra. Além disso, é possível diminuir o zoom, a fim de observar todo o conjunto espacial de uma única vez ou analisar Orion bem de perto.

Os dados são gerados pelo grupo Operações de Dinâmica de Voo (FDO) no Centro de Controle de Missão Johnson Space Center da Nasa, em Houston, Texas. Ele é o responsável pela trajetória da Orion, rastreando onde a espaçonave está e para onde ela está se movendo — os chamados vetores.

"Esses vetores podem ser usados para amantes de dados, artistas e criativos para criar seu próprio aplicativo de rastreamento, visualização de dados ou qualquer outra coisa que imaginarem", explica a Nasa.

O rastreamento da Orion é feito pela Deep Space Network, uma rede de três enormes antenas parabólicas na Terra, que possibilitam a comunicação com as missões espaciais.

Inclusive, a tecnologia do AROW — que foi desenvolvido especialmente para o programa Artemis — será aplicada a outras missões no futuro.

Os principais marcos da missão Artemis 1 também podem ser acompanhados na conta da própria Orion no Twitter, onde são postadas atualizações e compartilhados dados como velocidade, temperatura, distância e tempo decorrido.

Por que o programa Artemis é tão importante?

Artemis 1, a primeira das três missões do programa, é, basicamente, um teste da tecnologia e da segurança, como preparação para as viagens tripuladas seguintes. Ela não tem astronautas a bordo e também não pousará na Lua — a cápsula Orion dará uma longa volta ao redor de nosso satélite e voltará para a Terra.

Em Artemis 2, a segunda fase do programa, o trajeto será parecido — mas com astronautas a bordo da cápsula. Já na terceira missão, prevista para 2025, enfim haverá o pouso lunar — e, consequentemente, o homem voltará a pisar na Lua, pela primeira vez desde 1972.

O programa também pretende levar a primeira mulher e a primeira pessoa negra para caminhar em nosso satélite.

Mais que tudo isto, o objetivo final é estabelecer uma base permanente na Lua, com um acampamento em solo e uma estação espacial em sua órbita, que futuramente serviria de "entreposto" para viagens mais longas — principalmente, até Marte.