;(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 mostra imagem rara de 2 buracos negros em processo de fusão; veja

Fusão de dois buracos negros na galáxia NGC 6240 - Reprodução/Nasa /CXC/ MIT /C.Canizares, M.Nowak)
Fusão de dois buracos negros na galáxia NGC 6240 Imagem: Reprodução/Nasa /CXC/ MIT /C.Canizares, M.Nowak)

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

14/12/2020 10h50

Uma foto com uma união cósmica de cair o queixo, que revela a fusão de dois buracos negros, foi compartilhada pela Nasa (agência espacial norte-americana), no Instagram oficial do famoso Observatório Chandra X-ray. Acredita-se que uniões como as retratadas na imagem sejam "as fontes mais poderosas de ondas gravitacionais no Universo", segundo a agência.

O observatório Chandra X-ray é conhecido por fazer imagens cósmicas ao medir raios-X emitidos por objetos de alta energia, como explosões estelares — e capta também a presença de buracos negros. A descrição da imagem na rede social mostra que os buracos negros em questão estão na galáxia NGC 6240.

"Vistos como os 'pontos' brilhantes perto do centro da imagem, os buracos negros estão separados por apenas 3 mil anos-luz. Eventualmente, eles irão flutuar juntos, formando um buraco negro maior daqui a milhões de anos", explica a legenda da foto.

De acordo com uma postagem em um blog da Nasa, ambos os buracos negros começaram a se fundir há 30 milhões de anos. Isso significa que a imagem é uma cena de um ado muito distante, embora seus protagonistas tenham sido detectados em 2002 pelo Chandra X-ray.

Mais tarde, os dados dos buracos negros foram combinados então com uma imagem do Telescópio Espacial Hubble, capturada em 2008. Hoje se sabe que os dois buracos são supermassivos, o que significa que estão no centro da galáxia NGC 6240.

Além disso, buracos negros supermassivos como os da foto são formados por nuvens de gás gigantescas ou aglomerados contendo milhões de estrelas que colapsaram. Esse belo fenômeno ocorria quando o universo ainda engatinhava, no começo de sua existência.

"A formação de múltiplos sistemas de buracos negros supermassivos deve ser comum no Universo, uma vez que muitas galáxias sofrem colisões e fusões com outras galáxias, a maioria das quais contém buracos negros supermassivos", observou a Nasa, no blog do observatório.