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

Nasa descarta perigo do 'asteroide do juízo final'

11/01/2013 20h28

WASHINGTON , 11 Jan 2013 (AFP) - Uma rocha espacial popularmente conhecida como "asteroide do juízo final" devido a temores de que pudesse colidir com a Terra dentro de algumas décadas não representa uma ameaça, informou a Nasa após fazer algumas observações do objeto.

O asteroide 99942 Apophis foi escaneado por telescópios ópticos e radares no espaço profundo durante um sobrevoo do corpo celeste esta semana, informou a agência espacial americana (Nasa) em um comunicado.

Batizado com o nome do deus do mal e da escuridão na mitologia egípcia, Apophis despertou temores quando foi detectado pela primeira vez, em 2004.

Os primeiros cálculos sugeriram uma probabilidade de colisão de 2,7% em 2029, a mais alta já registrada em um asteroide, mas este risco foi logo descartado em observações posteriores.

No entanto, permanecia a dúvida sobre uma possibilidade de impacto em 13 de abril de 2036, que a Nasa inicialmente estabeleceu em uma em 45.000 e depois diminuiu para uma em 250.000.

Novas observações demonstram que até mesmo esta remota possibilidade pode ser excluída, informou o Laboratório de Propulsão a Jato (JPL) em um comunicado publicado esta quinta.

"Com os novos dados efetivamente descartamos a possibilidade de um impacto do Apophis com a Terra em 2036", disse Don Yomans, encarregado do programa Near-Earth Object, do JPL.

"A probabilidade de impacto agora é de menos de uma em um milhão, o que nos deixa numa situação confortável para efetivamente descartar um impacto com a Terra em 2036. Nosso interesse no asteroide Apophis será essencialmente científico no futuro previsível", destacou.

A aproximação em 2036 será a maior de um asteroide de seu tamanho, pois Apophis chegará a 31.300 km do nosso planeta, o que significa que ará raspando nas órbitas dos satélites geoestacionários.

Em 15 de fevereiro, o asteroide 2012 DA14 se aproximará ainda mais.

Yeomans disse que o DA14 tem 40 metros de comprimento e ará próximo ao planeta em apenas 27.500 km.

Imagens do Apophis, capturadas esta semana pelo telescópio Herschel, da Agência Espacial Europeia (ESA), mostrou que ele tem 325 metros de comprimento, cerca de um quinto maior do que se pensava anteriormente.