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

Cinema na sua casa

Projetores estão cada vez mais sofisticados. Descubra como eles funcionam

RODRIGO LARA COLABORAÇÃO PARA TILT, EM SÃO PAULO

Por mais que hoje existam TVs avantajadas, a ideia de recriar em casa a experiência de assistir a um filme no cinema é tentadora. Isso é possível com um aparelho capaz de extrapolar uma imagem para um tamanho consideravelmente maior: o projetor.

Como benefício extra, ele acaba criando essa mesma sensação de imersão numa tela enorme mesmo com conteúdos pensados para a telinha, como séries do streaming - substituindo tranquilamente uma TV quando necessário.

Mas você sabe como ele é capaz de projetar imagens tão grandes? Abaixo explicamos o seu funcionamento.

Como funciona um projetor?

Os modelos mais comuns de projetores são compostos de alguns elementos principais: uma fonte de luz; um meio de separar as cores da luz branca; elementos que formam cada pixel da imagem (como um conjunto de espelhos microscópicos ou painéis de LCD); e um sistema de controle eletrônico.

A fonte de luz tem seu facho concentrado por espelhos e ilumina o separador de cores, que pode ser um conjunto de lentes especiais ou um disco rotativo com filtros em vermelho, azul e verde.

O disco rotativo usa as características do olho humano a seu favor: a cada 1/50 de segundo, nossa retina combina a quantidade de luz vermelha, verde e azul captada para produzir uma imagem.

Assim, projetores que usam essa tecnologia, na verdade, pulsam rapidamente luzes em cada uma das cores, criando uma ilusão de ótica que faz o olho humano entender que vê uma imagem única, em vez de três sobrepostas.

Independentemente da tecnologia, a luz colorida segue para o elemento formador de pixels.

No caso de aparelhos que usam microespelhos, eles se movimentam para refletir a luz (criando os pixels coloridos) ou bloqueá-la (criando os pixels. pretos).

Essa ação coordenada é controlada por uma central eletrônica, programada para reproduzir o sinal de vídeo recebido da fonte.

No projetor que usa LCD, os painéis que recebem cada uma das cores básicas (vermelho, verde e azul) podem ser polarizados para controlar a intensidade dessas cores. Essas três diferentes imagens são combinadas por um prisma para criar a imagem final.

Em ambos os casos, a imagem é refletida na direção da(s) lente(s). O curvamento dessa(s) camada(s) transparente(s) causa um fenômeno óptico que amplia a imagem antes de ela chegar na superfície que funcionará como "tela".

Por fim, há os projetores que usam lasers como fonte de luz. Sua vantagem é que a luz também a por elementos de separação de cores, mas não há necessidade de uma peça para focar a luz emitida, já que lasers "caminham" em linha reta.

Dúvidas comuns

  • É verdade que projetores têm vida útil limitada?

    Desconsiderando eventuais defeitos em componentes, quem tem vida útil limitada é a fonte de luz. Nos projetores com lâmpada de bulbo, ela tende a durar em torno de 5 mil horas. Os modelos que utilizam LEDs duram em média 10 mil horas. E os de laser, 20 mil.

  • O que determina a resolução da imagem desses aparelhos?

    Ela é definida pela quantidade dos pequenos espelhos refletores. Assim, um projetor capaz de gerar imagens em 2K (2048 x 1080 pixels) precisará de cerca de 2,2 milhões de pequenos espelhos. Já modelos capazes de reproduzir imagens em 4K, terão que ter por volta de 8,8 milhões desses espelhos.

  • Eles só podem ser usados em ambientes escuros e longe da parede?

    Tudo depende do modelo. Aqueles capazes de atingir maiores níveis de contraste e brilho tendem a se sair melhor em ambientes mais claros. Os melhores resultados, porém, são vistos em ambientes mais escuros. Da mesma forma, cada aparelho tem especificações de distância mínima, ideal e máxima em relação à superfície onde a imagem será projetada. Esse local, por sua vez, deve ser minimamente liso e de cor clara - do contrário, recomenda-se o uso de uma tela de projeção.

Topo