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

Nova espécie de dinossauro similar a Tiranossauro é descoberta na Patagônia

Dinossauro Llukalkan aliocranianus tem nome que significa "aquele que dá medo"  - Divulgação/Journal Of Vertebrate Paleontology/Jorge Blanco
Dinossauro Llukalkan aliocranianus tem nome que significa 'aquele que dá medo' Imagem: Divulgação/Journal Of Vertebrate Paleontology/Jorge Blanco

Colaboração para o UOL, em São Paulo

31/03/2021 16h51

Paleontólogos publicaram nesta terça-feira (30) a descoberta de uma nova espécie de dinossauro que viveu há cerca de 80 milhões de anos, na região da Patagônia, na Argentina. O réptil recebeu o nome científico de Llukalkan aliocranianus, cuja nomenclatura significa, respectivamente, "aquele que causa medo," no idioma indígena mapuche, e "crânio incomum", em latim.

A descoberta foi registrada na revista científica Journal of Vertebrate Paleontology. Os restos fossilizados do animal, que incluem sua caixa craniana preservada, foram localizados em 2015, durante escavações na Formação Bajo de la Carpa, no depósito La Invernada, na região noroeste da Patagônia.

A criatura tinha enormes garras, mordida poderosa e um sentido agudo de audição para caçar suas presas. Era muito parecido com um Tiranossauro (Tyrannosaurus rex) na aparência. Tanto que, assim como a famosa espécie, o L.aliocranianus tinha braços pequeninos e atarracados.

O tamanho dele era quase o de um elefante, com pelo menos 5 metros de comprimento. O crânio do animal — um dos principais predadores da Patagônia — era anormalmente curto e profundo. Mas, muitas vezes também tinha cristas, saliências e até chifres assustadores.

Reconstituição do crânio de dinossauro da espécie Llukalkan aliocranianus, que viveu há 80 milhões de anos - Divulgação/Journal of Vertebrate Paleontoly  - Divulgação/Journal of Vertebrate Paleontoly
Reconstituição do crânio de dinossauro da espécie Llukalkan aliocranianus, que viveu há 80 milhões de anos
Imagem: Divulgação/Journal of Vertebrate Paleontoly

O dinossauro recém-identificado se soma a outras dez espécies de abelisaurídeos, uma família que governava no Cretáceo Superior a Patagônia e outras áreas do antigo supercontinente Gondwana, que engloba hoje a África, Índia, Antártica, Austrália e América do Sul.

"Esta é uma descoberta particularmente importante porque sugere que a diversidade e abundância de abelisaurídeos eram notáveis, não apenas na Patagônia, mas também em áreas mais locais durante o período crepuscular dos dinossauros", comenta em comunicado, publicado no site EurekAlert, o autor principal do estudo, Federico Gianechini, paleontólogo da Universidade Nacional de San Luis, na Argentina.

Em entrevista à CNN, Gianechini contou ainda que o dinossauro com nome científico "que dá medo" possui cavidades na área da orelha que outros abelisaurídeos não tinham, o que pode ter dado à espécie maior alcance auditivo.

"[...] Isso, junto com seu aguçado olfato, teria dado grande capacidade desta espécie como predador", citou também o especialista, que acredita que a descoberta indica a existência de mais abelisaurídeos ainda não descobertos.

Errata: este conteúdo foi atualizado
Diferentemente do informado no 1° parágrafo desta matéria, a nova espécie de dinossauro descoberta viveu há cerca de 80 milhões de anos, e não há 800 milhões de anos. A informação já foi corrigida.