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

Cósmicos e fantasmas: astrônomos avistam óvnis "por toda parte" na Ucrânia

Estados Unidos sugerem que alguns objetos voadores não identificados sejam equipamentos militares de outros países, como China e Rússia - Departamento de Defesa dos EUA/To The Stars Academy
Estados Unidos sugerem que alguns objetos voadores não identificados sejam equipamentos militares de outros países, como China e Rússia Imagem: Departamento de Defesa dos EUA/To The Stars Academy

Marcella Duarte

De Tilt*, em São Paulo

25/09/2022 13h57

Astrônomos ucranianos dizem que o céu do país está tomado não apenas por mísseis russos, mas também por um grande número de óvnis (que na sigla, são objetos voadores não identificados, ou UFOs, em inglês). Não estamos falando de fenômenos alienígenas, mas de avistamentos sem explicação — que podem significar, por exemplo, novas tecnologias de guerra ainda não conhecidas pelo mundo.

Dezenas de imagens foram registradas por duas estações de monitoramento de meteoros, em Kiev e na vila de Vinarivka, a 120km da capital. "Nós os vemos por toda parte. Observamos um número significativo de objetos cuja natureza não está clara", escreveram os pesquisadores em um artigo da Academia Nacional de Ciências da Ucrânia.

Os cientistas classificaram os óvnis em dois tipos: "cósmicos" (brilhantes) e "fantasmas" (escuros). O cósmico é um objeto que aparece mais luminoso do que o céu, mesmo durante o dia, enquanto o fantasma é "completamente preto, que não emite luz e absorve toda a radiação que incide sobre ele."

Veja um breve explicação de um astrônomo amador e astrofotógrafo brasileiro:

A principal característica destes óvnis ucranianos é uma velocidade extremamente alta. "Detectamos voos de um, grupos e esquadrões, movendo-se a velocidades de 3 a 15 graus por segundo." Fantasmas foram observados na troposfera "a distâncias de até 10 a 12 km. Estimamos seu tamanho de 3 a 12 metros e velocidades de até 15 km/s."

Por isso, só podem ser detectados por equipamentos especializados. "O olho humano não consegue focar fenômenos que durem menos de um décimo de segundo", diz o estudo. "Leva quatro décimos para reconhecermos um evento". Registros comuns de fotos e vídeos também não capturam estes óvnis. "Para detectá-los, é preciso ajustar o equipamento: velocidade do obturador, taxa de quadros, e alcance dinâmico."

Usando câmeras de vídeo coloridas e ajustadas nas duas estações de observação de meteoros, os pesquisadores dizem ter sido capazes de gravar os objetos desconhecidos em zoom no céu.

A explicação mais óbvia é que estes objetos sejam modernos jatos, mísseis e outros itens bélicos — mas os astrônomos não especulam sobre sua natureza, nem fazem referência clara à guerra na Ucrânia, que já dura mais de sete meses. Os Estados Unidos há muito advertem que certos óvnis sejam equipamentos de ponta de militares estrangeiros, particularmente da China e da Rússia.

O artigo foi publicado, em fase de revisão dos pares, no repositório arXiv.

*Com informações de Space.com, Vice e New York Post.