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

Falha primeiro lançamento de foguete da Virgin Orbit nos EUA

25/05/2020 22h19

Los Angeles, 26 Mai 2020 (AFP) - A empresa Virgin Orbit falhou nesta segunda-feira (25) em sua primeira tentativa de lançar um foguete de um avião a 10.000 metros de altitude, segundo anunciou a companhia.

Neste voo de testes, depois de se desacoplar da aeronave que o transportava, o foguete se impulsionou até a órbita terrestre, mas houve uma falha.

"A missão terminou pouco depois do início do voo", informou no Twitter a Virgin Orbit.

A jovem empresa espacial, fundada em 2012 pelo milionário britânico Richard Branson, busca oferecer um serviço de lançamento flexível e rápido aos operadores de pequenos satélites (300 a 500 quilos), um mercado em plena ascensão.

O foguete da Virgin Orbit, uma máquina de 21 metros de comprimento chamada LauncherOne, não foi projetado para subir em posição vertical, mas vai preso à parte inferior de uma asa do Cosmic Girl, um Boeing 747 adaptado.

Quando a operação atingiu a altitude requerida, o avião libera o foguete, que se impulsiona acionando seu próprio motor e sobe à órbita terrestre para deixar a carga no espaço.

A fase inicial do teste funcionou depois que o Cosmic Girl decolou do aeroporto do deserto de Mojave, onde várias empresas têm sede.

A aeronave voou até a área de destino para soltar o foguete sobre o oceano Pacífico, em frente à costa de Los Angeles.

"O Cosmic Girl liberou o LauncherOne!", informou a empresa no Twitter.

"Confirmamos uma liberação limpa do avião", acrescentou três minutos depois, destacando que a missão havia terminado.

Horas depois, a empresa não deu maiores detalhes. "O LauncherOne manteve a estabilidade após o lançamento e ligamos o motor do primeiro estágio, o NewtonThree. Então, ocorreu uma anomalia na primeira fase do voo. Saberemos mais à medida que nossos engenheiros analisem a montanha de dados que coletamos hoje".

Antes do voo de testes, a empresa tinha enfatizado que a missão era "a coisa mais complexa tecnicamente" que tinha tentado realizar até o momento.

A empresa não respondeu imediatamente à pergunta da AFP sobre se o foguete havia se perdido.

O conceito de lançar um foguete com um avião é muito novo. O foguete Pegasus, desenvolvido pelo grupo Northrop Grumman, existe desde a década de 1990. Mas a Virgin Orbit quer fazer uma versão menos cara de lançamento.

Lançar um foguete de um avião permite mais flexibilidade do que um lançamento vertical porque teoricamente as companhias só precisam de uma pista de pouso ao invés de ter uma plataforma de lançamento espacial.

ico/dax/lp/gma/mvv

BOEING