;(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 cria habitat com impressora 3D para simular vida em Marte

Visitantes participam de tour pelo Mars Dune Alpha, uma simulação de habitação da Nasa de como seria viver em Marte - Go Nakamura/Reuters
Visitantes participam de tour pelo Mars Dune Alpha, uma simulação de habitação da Nasa de como seria viver em Marte Imagem: Go Nakamura/Reuters

12/04/2023 10h16Atualizada em 12/04/2023 10h16

À primeira vista parece uma casa comum, com quatro quartos e uma academia. Mas, na verdade, é uma casa criada com uma impressora 3D e pensada para que, a partir de junho, quatro pessoas vivam ali confinadas durante um ano, simulando a vida no planeta Marte.

O habitat, chamado Mars Dune Alpha, foi revelado na terça-feira e está localizado nas instalações de pesquisa do Centro Espacial Johnson da Nasa, em Houston, Texas. Aqueles que residirem lá ajudarão a preparar uma futura missão ao planeta vermelho.

Ao medir seu desempenho e habilidades cognitivas, a Nasa entenderá melhor os "recursos" que devem ser fornecidos durante esta ambiciosa jornada, explica Grace Douglas, principal pesquisadora do programa chamado CHAPEA, que supervisiona este experimento.

É um ponto crucial, dados "os limites de peso muito restritivos que podem ser enviados nessas missões", acrescenta.

A casa de 160 metros quadrados inclui uma fazenda vertical para cultivo de vegetais, uma sala dedicada a procedimentos médicos, uma área de relaxamento e estações de trabalho.

Nasa cria habitat para simular vida em Marte

Há também uma porta que leva a uma área de simulação do ambiente marciano. No chão de areia vermelha há uma estação meteorológica, uma pequena estufa e uma esteira, onde os voluntários caminharão suspensos por correias.

"Não podemos fazê-los andar em círculos por seis horas", brinca Suzanne Bell, gerente de programa do Laboratório de Desempenho e Saúde Comportamental da Nasa. Ela explica que esta área replicará o esforço e o tempo necessários para a atividade física em Marte.

Os nomes dos voluntários ainda não foram divulgados, mas não serão astronautas. Eles estarão sob estresse regularmente, com restrições de água ou falhas de equipamento, por exemplo.

Esta casa foi impressa em 3D. "Esta é uma das tecnologias que a Nasa está buscando para potencialmente construir habitats na superfície de outros planetas ou na Lua", diz Grace Douglas.

A agência espacial americana está preparando uma viagem de ida e volta a Marte, mas ainda faltam vários detalhes. Essa viagem, que duraria vários anos, poderia ocorrer "no final da década de 2030", segundo o da Nasa, Bill Nelson.

© Agence -Presse