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

Registros de buraco negro engolindo estrelas revelam fenômenos da galáxia

Registros sugerem que buracos negros podem dissipar estrelas em longas serpentinas - NASA/JPL-CALTECH
Registros sugerem que buracos negros podem dissipar estrelas em longas serpentinas Imagem: NASA/JPL-CALTECH

De Tilt, em São Paulo

30/01/2020 18h55

Em todas as galáxias, um buraco negro, bilhões de vezes mais pesado que o Sol, habita o seu centro. É possível ver seu brilho de longe, embora muitos deles estejam adormecidos — até o momento em que uma estrela a muito próxima a ele e causa um evento de perturbação de marés, fenômeno luminoso que pode durar até um mês.

De acordo com a Science, uma nova geração de pesquisas está capturando diversas imagens desse acontecimento, dando origem a novas ideias sobre como eles acontecem e quais as suas consequências.

"Ainda estamos nas trincheiras, tentando entender os mecanismos físicos que alimentam essas emissões", diz Suvi Gezari, pesquisadora da Universidade de Maryland.

As imagens capturadas por esse estudo mostram que, assim que a estrela se aproxima do buraco negro, ela se fragmenta em milhares de pedaços.

Depois disso, o buraco negro engole metade da matéria que a compõe, enquanto restante se arqueia em longas serpentinas.

Esses fragmentos rapidamente recuam e se misturam ao disco que alimenta o material no centro do buraco negro. Nesse momento, sua temperatura chega a níveis extremamente altos, capazes de emitir radiação.

Suvi Gezari e seus colegas descobriram ainda que os espectros do evento de perturbação de marés se dividiam em três classes: dominadas por hidrogênio, hélio ou uma mistura de gases.

O hidrogênio provavelmente sinaliza grandes estrelas jovens, enquanto que os de hélio podem apontar para os núcleos de estrelas mais antigas, cujas camadas de hidrogênio foram arrancadas anteriormente - provavelmente por um contato anterior com o buraco negro.

A cientista aponta ainda que as proporções trazem maiores detalhes sobre as estrelas nos centros das galáxias, que, a medir pela distância da Terra, seriam impossíveis de sondar.