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

A 300 mil km/s, luz parece "lenta" viajando pelo cosmos; veja animação

Gabriel Joppert

Colaboração para Tilt

21/05/2020 15h30

Sem tempo, irmão

  • Animação de cientista da JAXA simula luz percorrendo alguns trajetos cósmicos
  • Pulsos, separados por 1 milhão de km, viajam pelo espaço até a Lua e até Marte
  • Mesmo com avanços tecnológicos, explorar "vizinhança" da Terra é missão demorada

Para nós, humanos aqui na Terra, a velocidade da luz é muito rápida, com seus 300 mil km por segundo. Mas, uma animação do cientista planetário James O'Donoghue, da Agência de Exploração Aeroespacial do Japão (Jaxa), mostra que em termos cósmicos nossa percepção da luz pode mudar rapidamente.

Em um segundo, a luz é capaz de dar 7,5 voltas ao redor do planeta Terra. Rápido, certo? Mas na animação, ela chega a levar pouco mais de um segundo para chegar até a Lua. Já os pulsos percorrendo a distância até Marte são emitidos a cada 3,36 segundos e a distância entre eles é sempre de 1 milhão de km.

A velocidade da luz na astronomia é uma espécie de limite de velocidade do universo e das leis da física. Nenhum tipo de matéria — átomos, moléculas — pode chegar à velocidade da luz. Qualquer corpo que tentar se aproximar disso tem como "multa" a possibilidade de gerar quantidades apocalípticas de energia por meio de fusão nuclear.

Mas a animação de O'Donoghue nos mostra como até a luz pode ser "lenta" na vastidão do universo. Veja abaixo a simulação.

Se você achou que os três "minutos-luz" para chegar a Marte foram uma trilhazinha tranquila, lembre-se que o planeta vermelho é um dos nossos vizinhos de sistema solar. Isso dá uma ideia do desafio hercúleo que é a exploração do espaço pelos humanos.

Pensemos, por exemplo, na estrela mais pertinho de nós, a Proxima Centauri. Ela está a 4,24 anos-luz de nós, também de acordo com O'Donoghue. Imagine esse pulso da animação expandindo, sem parar, na velocidade máxima possível para qualquer corpo ou nave imaginável, por mais de 50 meses.

Para ter outra comparação, agora em termos da nossa tecnologia de exploração espacial atual: se a sonda New Horizons, enviada pela Nasa a Plutão, fosse enviada a Proxima Centauri na mesma velocidade de seu lançamento (cerca de 60 mil km/h), ela levaria 80 mil anos para chegar na estrela.

Ah, para quem por acaso lembrou do Usain Bolt lendo esse texto, repare que ele está aí em cima no infográfico.

O'Donoghue tem outras simulações muito legais no seu canal do YouTube para quem se interessa por astrofísica, gravitação e exploração espacial em geral.

Errata: este conteúdo foi atualizado
Diferentemente do informado, a velocidade da luz na animação não leva alguns segundos para chegar até a Lua. O tempo correto é pouco mais de um segundo. O erro foi corrigido.
Foi informado incorretamente também que a estrela Proxima Centauri estava a 4,22 anos-luz da Terra. Na realidade, o valor correto é de 4,24 anos-luz.