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

Esse conteúdo é antigo

Redemoinho gigante assusta moradores de povoado no interior de GO; assista

Carlos Madeiro

Colaboração para o UOL

01/06/2021 13h40Atualizada em 01/06/2021 13h40

Moradores do povoado Brejo Bonito, em Bom Jesus de Goiás, na região sul do estado, se assustaram ontem com um redemoinho gigante que ou pelo local e chamou a atenção da população.

O fenômeno ocorreu ontem por volta das 13 horas e foi filmado por locais, que se mostraram surpresos com a altura atingida pelo fenômeno, que tinha em torno de 30 metros.

Apesar do susto, não houve relato de danos a casas ou feridos com o redemoinho. Apenas um cabo de energia se rompeu.

Como se formam os redemoinhos

Segundo o meteorologista e professor do Instituto de Ciências Atmosféricas da Ufal (Universidade Federal de Alagoas), Humberto Barbosa, redemoinhos são fenômenos comuns em áreas secas e quentes, mas é difícil atingirem o tamanho desse visto em Goiás.

"Esse foi bastante significativo porque ele conectou com a nuvem —normalmente eles não se conectam", afirmou ao UOL. "Os redemoinhos são ventos em forma de espiral, formados pela convecção."

Essa convecção, explica Barbosa, "é uma força, basicamente, que atua como se estivesse sugando o ar que está próximo da superfície: ele vai fazendo esse espiral em forma de sucção, puxando esse ar debaixo para cima, em uma forma vertical, principalmente dias quentes e sem ventos."

Por conta dessa característica, os redemoinhos são mais comuns na região semiárida do Nordeste.

Ainda de acordo com Barbosa, apesar da semelhança visual, não há comparação de redemoinhos com tornados, ainda que testemunhas utilizaram esse termo para explicar o episódio de Goiás.

"Redemoinho é um fenômeno com ventos giratórios, nesse ponto semelhante aos tornados; mas só se assemelham nisso. Os tornados são ventos muito mais rápidos, com centenas de metros de tamanho e com origem a partir de correntes descendentes", afirma.

"O fluxo do redemoinho é de baixa intensidade dos ventos, tanto que as pessoas conseguiram fazer um vídeo próximo. Na condição de um tornado seria impossível tal proximidade sem causar nenhum dano", finaliza.