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

Macarrão alienígena? Nasa finalmente explica objeto misterioso em Marte

Objeto em formato de "macarrão" encontrado pelo Perseverance em Marte, em julho de 2022 - Divulgação/Nasa
Objeto em formato de "macarrão" encontrado pelo Perseverance em Marte, em julho de 2022 Imagem: Divulgação/Nasa

Marcella Duarte

De Tilt

04/08/2022 14h19

No mês ado, o robô-jipinho Perseverance encontrou um objeto misterioso em Marte: um emaranhado, que mais parecia um monte de "espaguete", sobre o solo rochoso do planeta. Ele foi registrado pelas câmeras do rover em 12/7, mas imagens de 16/7 mostravam que havia desaparecido.

Finalmente, cientistas da Nasa descobriram do que se trata e como chegou lá. Spoiler: não é comestível e nem alienígena. Tem a ver com o dramático pouso da missão, na Cratera Jezero (que abrigou um antigo lago marciano, onde pode haver vestígios de antiga vida microbiana), em fevereiro do ano ado.

Um sistema de descida (chamado EDL) colocou o Perseverance em segurança na superfície, e caiu, sem qualquer amortecimento, em um local mais afastado, conhecido como Planície Hogwallow. Destroços dele se espalharam por uma grande área, e frequentemente aparecem nas fotos da missão — já vimos o escudo protetor e uma manta reluzente, entre outros.

O "macarrão" em questão é mais um destes lixos humanos: provavelmente, um pedaço rasgado de rede Dracon. Esse material — um tipo de fibra de poliéster — é usado em mantas térmicas que ajudam a regular a temperatura dos equipamentos, durante o flamejante processo de descida.

A equipe disse, em um comunicado da agência espacial, que "este pedaço de rede em particular parece ter sofrido um desfiamento/trituração significativo, sugerindo que foi submetido a fortes forças."

macarrao marte - NASA/JPL-Caltech - NASA/JPL-Caltech
Imagens de 12 e 16 de julho sugerem que o objeto tenha sido carregado pelo vento
Imagem: NASA/JPL-Caltech

O mais impressionante é a longa distância que ele viajou. O EDL caiu a cerca de 2km de distância de onde o Perseverance está explorando. A Nasa sugere que o impacto pode ter espalhado material pelo ar, e que os ventos intensos do planeta teriam carregado os destroços ainda mais longe.

O desparecimento do "espaguete" significa que ele é leve o suficiente para ser movido para lá e para cá pela brisa marciana - e eventualmente pode voltar a ser encontrado.

A Nasa tem monitorado os detritos, para que não prejudiquem a missão, por exemplo, se enroscando no rover ou contaminando as amostras de rochas que estão sendo coletadas.