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

Voluntários arão 'perrengues' por um ano em simulação de Marte da Nasa

Mars Dune Alpha é uma simulação de um habitat em Marte feito pela Nasa em Houston, no Texas (EUA) - Go Nakamura/Reuters
Mars Dune Alpha é uma simulação de um habitat em Marte feito pela Nasa em Houston, no Texas (EUA) Imagem: Go Nakamura/Reuters

De Tilt, em São Paulo

25/06/2023 15h25Atualizada em 26/06/2023 08h30

Limitação de recursos, falha de equipamentos e atrasos na comunicação. Esses são alguns dos perrengues que voluntários da Nasa vão ar ao entrar neste domingo (25) numa missão que simula Marte na Terra.

Ao todo, eles ficarão 378 dias no local, com o objetivo de fazer experimentos e treinamentos para uma futura missão tripulada para o Planeta Vermelho, planejada para ocorrer na década de 2030.

A entrada dos voluntários no Mars Dune Alpha, um habitat de 158 metros quadrados, que fica no Centro Espacial Johnson, em Houston, Texas (EUA), está prevista para a noite deste domingo, por volta das 20h30 (horário de Brasília).

Os voluntários da missão são:

  • Kelly Haston, comandante e cientista especializada em estudar doenças humanas
  • Ross Brockwell, engenheiro de voo
  • Nathan Jones, médico
  • Alyssa Shannon, enfermeira

Nasa cria habitat para simular vida em Marte

O que os pesquisadores farão no "habitat marciano"

O habitat conta com uma cozinha, áreas de uso comum, estações de trabalho e dois banheiros. Há ainda uma área externa com murais e areia vermelha que simula a do Planeta Vermelho. Nela, eles farão simulações de caminhadas espaciais com a ajuda de sistemas de realidade virtual.

Para começar, esta missão de junho será a primeira de três planejadas pela Nasa — as outras estão previstas para 2025 e 2026.

A ideia é simular os desafios de uma missão humana em Marte, o que vai incluir limitação de recursos, falha de equipamentos, atrasos na comunicação e outros incidentes.

"A simulação permitirá que nós coletemos dados sobre desempenho físico e cognitivo para nos ajudar a entender melhor os potenciais impactos em uma missão de longa duração para Marte na saúde e performance da tripulação", explica Grace Douglas, principal pesquisadora do programa Chapea (Crew Health and Performance Exploration Analog), em comunicado no site da Nasa.

"Por fim, essas informações ajudarão a Nasa a tomar decisões para desenhar e planejar uma missão tripulada para Marte", finalizou Grace.

Não custa lembrar que a missão Artemis, que busca realizar uma missão tripulada à Lua, tem também como objetivo tentar estabelecer uma base em nosso satélite natural como "parada" antes de uma viagem longa até Marte — a título de curiosidade, uma viagem de ida e volta da Terra até o Planeta Vermelho levaria cerca de 21 meses (9 meses para ir, 3 meses para Terra e Marte ficarem alinhados e mais 9 meses do trecho de Marte até a Terra).