;(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

Sonda espacial japonesa Hayabusa-2 inicia viagem até asteroide primitivo

Em Tóquio

03/12/2014 08h36

O foguete nipônico H-2A colocou nesta quarta-feira em órbita a sonda Hayabusa-2, que iniciou uma longa viagem com destino a um asteroide primitivo, no qual deve pousar em 2018 para recolher dados inéditos que aumentarão a compreensão do Sistema Solar.

O lançamento aconteceu às 13H22 locais na base meridional de Tanegashima, após dois adiamentos na última semana, anunciou a Agência Japonesa de Exploração Espacial (Jaxa).

Após uma hora e 47 minutos de voo sem incidentes, a sonda Hayabusa-2 se separou do foguete no local previsto, segundo a agência.

A Hayabusa-2 iniciou o voo em direção ao '1999 JU3', um asteroide primitivo quase esférico de menos de um quilômetro de diâmetro, que deve alcançar em meados de 2018.

O objetivo da missão é recolher poeira do subsolo deste corpo celeste rochoso, que contém carbono e água, para tentar compreender quais matérias orgânicas e aquosas se encontravam originalmente presentes no Sistema Solar. O retorno à Terra está previsto para 2020, caso a missão aconteça da maneira planejada.

"Esta missão para recolher matéria primitiva tem o potencial para revolucionar nossa compreensão das condições da formação dos planetas", afirmou a equipe que coordena o projeto na JAXA.

"Também pode revelar informações importantes para proteger o planeta", completou a agência.

A Hayabusa-2 é quase similar ao antecessor, Hayabusa, lançado em 2003 em direção a outro asteroide, mas tem uma tecnologia mais avançada a partir das lições deixadas pelos muitos problemas sofridos durante a primeira missão, que chegou perto do fracasso.

Hayabusa conseguiu chegar ao asteroide Itokawa depois de uma verdadeira epopeia de sete anos

O asteroide 1999 JU3 tem a mesma órbita que o Itokawa, mas é mais largo e contém substâncias orgânicas de natureza diferente.

"Ao chegar perto do asteroide 1999 JU3, a sonda observará toda a superfície com a ajuda de instrumentos de teledetecção", explicou a JAXA.

Depois, Hayabusa-2 vai liberar o veículo robotizado Minerva2 e o módulo de pouso Mascot (o equivalente ao Philae na missão europeia Rosetta), projetado pelo Centro Nacional de Estudos Espaciais (CNES) da França e pelo Centro Aeroespacial Alemão (DLR), que devem recolher amostras da superfície.

Mascot, que tem expectativa de vida de 12 horas, vai utilizar quatro instrumentos que permitirão conhecer a composição mineralógica do solo, segundo a coordenadora do projeto, Muriel Deleuze, do CNES.

"O asteroide 1999 JU3 é chamado de primitivo porque não evoluiu desde sua formação há 4,5 bilhões de anos, quando se formou o Sistema Solar", explica Francis Rocard, astrofísico do CNES.

Para recolher poeira do 1999 JU3, a sonda deve realizar uma operação espetacular: lançar uma espécie de pêndulo e esconder-se atrás do asteroide, enquanto esta espécie de canhão espacial projeta uma bola de metal para criar uma cratera de vários metros de diâmetro.

Após o "bombardeio", Hayabusa-2 deve avançar por pouco tempo pelo asteroide para reunir as amostras e depois iniciar a viagem de volta à Terra.

A primeira missão Hayabusa teve muito apelo popular e o sucesso, após vários incidentes técnicos, se tornou um símbolo da perseverança japonesa, capaz de superar a adversidade.

A popularidade de Hayabusa foi determinante para que o governo aceitasse um orçamento de 31 bilhões de ienes (260 milhões de dólares) para esta segunda missão espacial.