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

Elon Musk mostra primeira imagem do Super Heavy, seu mais novo megafoguete

Foguete Super Heavy, da SpaceX - Twitter @elonmusk/Divulgação
Foguete Super Heavy, da SpaceX Imagem: Twitter @elonmusk/Divulgação

Marcella Duarte

Colaboração para Tilt

20/03/2021 12h38

O bilionário Elon Musk postou, no Twitter, a primeira imagem real do foguete Super Heavy, da sua empresa espacial SpaceX. A foto foi tirada na quinta-feira (18), na base de testes da empresa em Boca Chica, no Texas (EUA).

Este primeiro protótipo, batizado de BN1 (Booster Number 1), tem 70 metros de altura —repare na pessoa trabalhando em cima da grua, para ter uma noção de perspectiva. Mais de 30 anéis de aço compõem sua estrutura.

O foguete está posicionado para ar por testes em solo nas próximas semanas. Com o tempo, serão desenvolvidos os protótipos aperfeiçoados BN2 e BN3.

O Super Heavy é o foguete de última geração que levará a também enorme nave Starship (de 55 metros de altura) para o espaço. Imagine um futuro lançamento com os dois, um montado sobre o outro: 125 metros de tecnologia de ponta.

Veja abaixo uma simulação feita por um fã da SpaceX. O próprio Elon Musk tuitou dizendo que a animação é "bem parecida com o voo real esperado".

Quando estiver pronto, o Super Heavy terá 30 motores Raptor e provavelmente ganhará o título de foguete mais poderoso do mundo. E com o benefício de ser reutilizável —ou seja, lançamentos mais baratos e menos lixo espacial gerado. O SLS, da Nasa, apesar de ter capacidade parecida, é de uso único.

Já a Starship é a nave reluzente que Elon Musk pretende usar para colonizar Marte. Também reutilizável, ela carregará até 100 ageiros e 100 toneladas de carga. A ambiciosa meta do bilionário é, até 2024, pousar na Lua.

A Starship também terá motores poderosos para voltar à Terra e até voar sozinha entre a Lua e Marte, mas precisa do superfoguete para sair de nosso planeta. Logo após um lançamento, o Super Heavy deve voltar para um pouso vertical em uma base remota ou uma balsa no oceano —como o Falcon 9 e o Falcon Heavy já fazem.

Os primeiros testes orbitais do sistema com o Super Heavy e a Starship estavam previstos para julho deste ano. Mas cumprir esse cronograma já parece impossível, por causa do ritmo do desenvolvimento e as falhas nos testes da Starship, que explodiu algumas vezes.

Até 2050, Musk quer construir uma cidade para um milhão de pessoas em Marte. "Precisamos melhorar nossa taxa de inovação ou, com base nas tendências anteriores, com certeza estarei morto antes de Marte", disse em uma conferência no ano ado.