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

Pole Position

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

F1 tem semana agitada com novo carro de Verstappen, Aston Martin e McLaren

Max Verstappen, agora campeão do mundo, pilota a Red Bull com os novos pneus em Abu Dhabi - Red Bull
Max Verstappen, agora campeão do mundo, pilota a Red Bull com os novos pneus em Abu Dhabi Imagem: Red Bull

Colunista do UOL

07/02/2022 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Os primeiros candidatos a protagonistas da temporada 2022 da Fórmula 1 começam a ser lançados nesta semana, com destaque para o carro com o qual Max Verstappen vai defender seu título mundial. McLaren e Aston Martin também têm lançamentos programados para os próximos dias.

A expectativa é de que veremos pelo menos fotos reais e vídeos dos novos carros pela primeira vez, já que a Haas optou por mostrar imagens computadorizadas que, como revelou o chefe Guenther Steiner, refletem um nível de desenvolvimento do carro anterior ao que ele está no momento.

Pelo menos os norte-americanos, últimos no campeonato de 2021, conseguiram atrair muita atenção, tamanha a expectativa para os lançamentos de carros que têm um visual bastante diferente devido à adaptação às novas regras que começam a valer em 2022 e visam permitir aos pilotos brigarem mais perto uns dos outros na pista.

Nesta semana, a Red Bull mostrará o RB18 na quarta-feira, a partir das 13h, pelo horário de Brasília, em um evento online. O time segue com a mesma dupla, Max Verstappen e Sergio Perez, e agora ará a dar nome também aos motores, embora continue usando as unidades de potência da Honda.

Como a Red Bull tem a bordo Adrian Newey, considerado o melhor projetista de todos os tempos da F1, é grande a expectativa, embora os maiores segredos deste novo regulamento devam estar nos assoalhos dos carros, escondidos nas fotos de lançamentos. Isso porque as superfícies aerodinâmicas são bem mais restritas do que em outros regulamentos. Tudo em busca de fazer com que o objetivo de diminuir significativamente a turbulência gerada pelos carros seja atingido.

Na quinta-feira, será a vez da Aston Martin, provavelmente a grande incógnita do campeonato. Eles vêm com a mesma dupla de 2021, Sebastian Vettel e Lance Stroll, mas terão um novo chefe, Mick Krack, vindo da BMW, e precisam se recuperar depois de um ano em que foram atingidos em cheio por um novo conjunto de regras. O lançamento do AMR22 será a partir das 11h pelo horário de Brasília, também online. A equipe tentará mostrar confiança já que há rumores de que o projeto está atrasado.

E, por último nessa semana, a McLaren mostrará o MCL36, em um lançamento em conjunto com as outras categorias em que o time inglês está envolvido: a Indy, a Extreme E e o programa de esports, o McLaren Shadow. Então, para acomodar também o mercado norte-americano, o lançamento será mais tarde, a partir das 16h pelo horário de Brasília.

Na F1, a McLaren segue com a dupla Daniel Ricciardo e Lando Norris e com a promessa de um programa de desenvolvimento agressivo no começo do campeonato. O carro que será lançado nesta sexta-feira certamente é diferente daquele que vai alinhar no primeiro GP da temporada, no Bahrein, uma vez que o time já anunciou que vai estrear um grande pacote de atualizações para a etapa de abertura, dia 20 de março.