%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
A["aviso de gesto sobre a cena:<br/>mouse, dedo ou caneta"] --> R{"roda?"}
R -->|"sim"| Z{"valor<br/>vertical?"}
Z -->|"zero:<br/>de lado"| N["nada muda"]
Z -->|"positivo:<br/>para baixo"| M["distância<br/>× 1,12"]
Z -->|"negativo:<br/>para cima"| V["distância<br/>÷ 1,12"]
R -->|"não"| Q{"quantos<br/>apertados?"}
Q -->|"nenhum"| N
Q -->|"um"| G["arrastar: cada pixel<br/>para a direita, azimute<br/>− 0,35 grau; para baixo,<br/>elevação + 0,35 grau"]
Q -->|"dois"| P["pinça: distância ×<br/>(dedos antes ÷ agora);<br/>o agora vira o antes"]
G --> TE["trava da elevação:<br/>0 a 85 graus"]
M --> TD["trava da distância:<br/>0,35 m a 8 m"]
V --> TD
P --> TD
TE --> W["a posição sai<br/>dos três números,<br/>e a câmera é escrita"]
TD --> W
Realidade virtual não imersiva — Atlas
O módulo inteiro em oito formas visuais. Cada uma mostra o mesmo conteúdo de outro jeito: o resumo ilustrado; os procedimentos passo a passo; os cartões para treinar de memória; o módulo contado como uma história, figura a figura; a árvore dos tópicos; o painel que junta conceito, exemplo, diagrama e fato; a rede de conceitos; e as regras, as contas e os erros previsíveis para consultar na hora.
Resumo ilustrado
Fluxogramas
Cinco procedimentos do módulo, na ordem em que ele os apresenta. Siga cada um com um lápis, aplicando-o à mesa de oficina do ambiente e às cinco peças do domínio, as do mecanismo que está sobre ela (o corpo, o eixo, a engrenagem grande, a engrenagem pequena e a tampa do mecanismo).
Mover a câmera por um gesto
Este fluxograma decide o que cada gesto muda na câmera. A câmera em órbita gira em volta do alvo, o ponto para onde ela olha, e guarda a posição em três números: o azimute (o giro em volta do alvo visto de cima), a elevação (o ângulo com que a câmera sobe acima da altura do alvo) e a distância até o alvo. O gesto chega do mouse, do dedo ou da caneta e muda só esses números: a roda multiplica ou divide a distância; um dedo apertado arrasta e gira; dois dedos fazem a pinça, o gesto de afastar ou aproximar os dois na tela. No fim de cada caminho, uma trava (o menor ou o maior valor que a órbita aceita) segura a elevação ou a distância, e só então a câmera é escrita.
Enquadrar uma peça e conferir a cobertura
Este fluxograma decide se uma peça do domínio fica coberta: se a câmera, levada até ela pela conta do enquadramento, a mostra inteira na tela. Enquadrar é levar a câmera a esse ponto. A peça se procura pelo nome na cena. Se for um lote, o conjunto de cópias desenhado numa só chamada de desenho (um só pedido à placa de vídeo), a conta usa a caixa de todas as cópias; se não, a caixa do que aparece, que deixa de fora o que está escondido na peça. Nos dois casos se trata de uma caixa envolvente, a menor caixa com as arestas paralelas a x, y e z que contém o que entra na conta, e dela sai a esfera envolvente, com centro no centro da caixa e raio igual à metade da diagonal da caixa. A distância pedida sai do raio, do campo de visão (o ângulo que a tela mostra de cima a baixo, 55 graus) e da margem de 1,25; a distância concedida é a pedida presa entre as travas da distância, de 0,35 m a 8 m. No último losango, a fração da altura é quanto da altura da tela o diâmetro da esfera ocupa na distância concedida.
%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
A["uma peça do domínio,<br/>procurada pelo nome"] --> E0{"está<br/>na cena?"}
E0 -->|"não"| F["falta: não<br/>conta como coberta"]
E0 -->|"sim"| L{"é um<br/>lote?"}
L -->|"sim: a caixa de<br/>todas as cópias"| VZ{"caixa<br/>vazia?"}
L -->|"não: a caixa do<br/>que aparece"| VZ
VZ -->|"sim"| X["a câmera não se move,<br/>e a peça não conta<br/>como coberta"]
VZ -->|"não"| ES["esfera: o centro da caixa<br/>vira o alvo; raio de<br/>metade da diagonal"]
ES --> PE["pedida = raio ÷ seno da<br/>metade do campo de visão<br/>× 1,25; concedida: presa<br/>entre 0,35 m e 8 m"]
PE --> Q{"fração<br/>até 1?"}
Q -->|"sim"| S["peça coberta"]
Q -->|"não"| N["peça não coberta"]
Medir a folga e acusar a imagem perdida
Este fluxograma decide se a medida vale e o que ela diz: quanto trabalho ainda cabe e, quando uma imagem se perde, onde procurar a causa. A medida só vale depois de 120 quadros (cada quadro é uma imagem que o aparelho mostra), porque os primeiros fazem trabalho que só se faz uma vez. Com eles, a folga sai do teto (o tempo que o programa tem para cada quadro, 16,7 ms nesta página, o da tela) menos o custo médio (o tempo que o trabalho do próprio programa leva por quadro). Depois o losango olha o pior intervalo: o intervalo é o tempo real entre duas imagens, e o pior é o mais longo dos últimos 120 quadros. Acima de 25,05 ms, uma imagem se perdeu: não ficou pronta a tempo, e a tela repetiu a anterior. Se a folga continua positiva, a causa pode estar no código ou fora dele, na placa de vídeo, no compositor (a parte do sistema operacional que junta na tela o que todos os programas desenham) ou em outro programa.
%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
A["clique em medir"] --> Q0{"já são<br/>120 quadros?"}
Q0 -->|"não"| C["a medida carrega o trabalho<br/>que só se faz uma vez:<br/>não vale; meça mais tarde"]
Q0 -->|"sim"| F["folga = 16,7 ms menos<br/>o custo médio"]
F --> Q1{"pior intervalo<br/>acima de<br/>25,05 ms?"}
Q1 -->|"não"| OK["nenhuma imagem perdida<br/>acusada; a folga diz quanto<br/>trabalho ainda cabe"]
Q1 -->|"sim: imagem perdida"| Q2{"folga<br/>negativa?"}
Q2 -->|"sim"| P["o programa não coube:<br/>o código sozinho<br/>passa do teto"]
Q2 -->|"não"| D["procure no código e fora dele:<br/>placa de vídeo, compositor,<br/>outro programa; a medida<br/>não diz qual"]
Aferir os três limites
Este fluxograma decide, para cada limite da janela, se o programa em execução o confirma, o contraria ou não tem como dizer. Um limite de um regime é uma coisa que o regime não oferece, escrita em quatro partes. A janela tem três: a profundidade inferida (calculada das pistas da própria imagem); a falta de escala corporal (saber, sem régua, que um tampo está na altura da cintura); e a falta de alcance de braço (a distância até onde a mão chega sem dar um passo). Aferir é confrontar o que cada limite afirma com o que o programa em execução sabe. Para a profundidade, o losango pergunta se sai uma imagem por quadro, para a tela, ou uma para cada olho. Para a escala corporal, pergunta pelo chão e pelo visor (o aparelho preso à cabeça que cobre os olhos): o espaço de referência da janela (o sistema de coordenadas das posições, com a regra que fixa a origem) acompanha o olhar e não tem chão.
%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
L["cada limite da lista,<br/>com o programa em execução"] --> Q{"qual<br/>limite?"}
Q -->|"profundidade inferida"| Q1{"uma imagem<br/>por quadro,<br/>para a tela?"}
Q1 -->|"sim: a mesma<br/>aos dois olhos"| C1["confirmado"]
Q1 -->|"não: uma<br/>para cada olho"| X1["contrariado"]
Q -->|"sem escala corporal"| Q2{"sem chão e sem<br/>visor mostrando<br/>a imagem?"}
Q2 -->|"sim"| C2["confirmado"]
Q2 -->|"não"| X2["contrariado"]
Q -->|"sem alcance de braço"| I["nada no programa mede o braço:<br/>inconclusivo"]
Decidir se a janela está pronta para ser destino
Este fluxograma decide se a janela pode ser o destino da queda entre regimes (a passagem para um regime que pede menos do aparelho, que termina no regime em janela, a cena numa tela comum). A primeira pergunta é a de quem nunca viu o projeto: ele chega a cada peça se a conferência da entrega cobre as cinco peças do domínio, se há um botão por peça e se a página traz, antes da cena, o que o módulo chama de explicação de uso, o texto que diz como girar, aproximar e ir a cada peça. A segunda pergunta é a dos limites: cada um escrito na página, com a aferição ao lado.
%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
A["a janela que vai ser destino<br/>da queda entre regimes"] --> Q1{"quem nunca viu<br/>o projeto chega a<br/>cada peça, sem ajuda?"}
Q1 -->|"não"| F1["falta trabalho na janela:<br/>a conferência da entrega,<br/>os botões, a explicação de uso"]
Q1 -->|"sim"| Q2{"cada limite<br/>na página, com<br/>a aferição?"}
Q2 -->|"não"| F2["falta trabalho na janela:<br/>os limites escritos como dado,<br/>e aferidos"]
Q2 -->|"sim"| S["a janela se sustenta sozinha"]
F1 --> N["nenhum regime construído<br/>em cima dela compensa a falta"]
F2 --> N
Cartões de memória
Leia a frente, diga a resposta em voz alta ou escreva no papel, e só então vire o cartão.
O que o distingue é a direção da dependência. Os outros regimes acrescentam ao caso base, e o caso base não depende de nenhum deles. Entregue pela metade, ele não espera os outros ficarem prontos: transforma cada falta de aparelho numa tela que não leva a lugar nenhum.
Neste percurso, o caso base é o regime em janela, a realidade virtual não imersiva: a cena mostrada numa tela comum, sem equipamento além do computador ou do celular.
Com o alvo em (x_a, y_a, z_a), a posição da câmera é
\[x = x_a + d\cos\varepsilon\,\operatorname{sen}\alpha, \qquad y = y_a + d\operatorname{sen}\varepsilon, \qquad z = z_a + d\cos\varepsilon\,\cos\alpha.\]
Cada gesto muda os ângulos ou a distância, e a posição sai dos três números. Enquanto a órbita estiver instalada, a posição escrita por qualquer outro caminho dura só até o gesto seguinte, que a reescreve a partir dos três números: quem quiser a câmera noutro lugar pede à órbita um alvo e uma distância novos.
A elevação e a distância têm travas, o menor e o maior valor que a órbita aceita, e cada trava existe por um defeito que ela evita.
Com \theta para o campo de visão vertical da câmera, o ângulo que a tela mostra de cima a baixo, a esfera encosta na borda de cima e na de baixo da tela à distância \rho / \operatorname{sen}(\theta/2). A distância pedida é essa, multiplicada por uma margem m maior que 1, para a cena não encostar nas bordas:
\[d_{\text{pedida}} = \frac{\rho}{\operatorname{sen}(\theta/2)} \times m.\]
A distância concedida é a pedida presa entre as travas de distância da órbita, e é a que a câmera usa.
A esfera, e não a caixa, porque a esfera ocupa a mesma altura na tela vista de qualquer direção: a conta não precisa ser refeita quando quem olha muda de ângulo. A caixa que entra na conta é a do que aparece na tela; o que está escondido no objeto não entra.
A conta mede a altura da tela, e o objeto aparece inteiro quando a tela é mais larga do que alta, porque aí a altura encosta primeiro. Numa tela mais alta do que larga, quem encosta primeiro é a largura, e a conta passa a valer com o campo de visão horizontal no lugar de \theta.
A conferência usa a mesma conta que a órbita usa para se mover. Uma conferência com conta própria poderia aprovar uma peça que a câmera não consegue mostrar.
A cobertura é coisa da câmera e da tela, e não do corpo. A peça coberta pela órbita pode estar a qualquer distância, e chegar a ela custa o mesmo gesto; é por isso que o regime em janela cobre todas as peças e não tem alcance de braço.
A folga sai do custo, e não do intervalo entre imagens. O intervalo acompanha o ritmo da tela e não desce abaixo dele, por mais leve que a cena seja: numa tela de sessenta imagens por segundo, com o teto de 16,7 ms, a folga tirada do intervalo fica perto de zero em qualquer cena, leve ou pesada.
O intervalo responde a outra pergunta: se alguma imagem foi perdida. Ele anda em múltiplos do ritmo da tela, e um intervalo perto do dobro do ritmo é uma imagem que não saiu a tempo.
A última parte é a que separa o limite de uma lamentação. "Não há escala corporal" diz o que falta; "não dá para mostrar que o tampo tem a altura certa para trabalhar de pé" diz o que deixa de ser demonstrável, e é isso que precisa saber quem compara dois regimes.
Os limites ficam escritos como dado, junto do ambiente que eles descrevem: quem abre o ambiente os encontra na mesma página.
Ela se opõe à profundidade vista com os dois olhos. Num visor, cada olho recebe uma imagem um pouco diferente, e a diferença entre as duas é uma pista que uma imagem sozinha não tem. Uma tela plana mostra a mesma imagem aos dois olhos, e por isso, no regime em janela, toda profundidade é inferida.
Profundidade inferida não é profundidade ausente: a cena na tela tem perto e longe. O que ela não sustenta é julgar, sem girar a câmera, qual de duas peças próximas está mais perto, que é o julgamento que encaixar uma peça na outra pede.
As duas são medidas contra o corpo, e só existem num regime que sabe onde o corpo está: onde fica o chão da sala, a que altura estão os olhos, onde está a mão. O regime em janela não sabe nenhuma dessas coisas. A cena aparece do tamanho que a tela tiver, e o cursor chega a qualquer ponto da tela com o mesmo gesto, esteja a peça perto ou longe da câmera.
Nenhuma das duas falta por defeito de implementação, e nenhum código dentro do regime em janela as conserta: elas chegam com o regime que conhece o chão e rastreia a mão.
O terceiro resultado não é falha da aferição. Sem ele, um limite que nada no programa mede teria de sair confirmado ou contrariado sem fundamento, com a mesma cara dos que foram medidos; inconclusivo diz a quem lê que aquela linha depende de uma pessoa.
A aferição descreve o regime em uso. Os limites da profundidade e da escala corporal, aferidos com um visor apresentando a imagem, saem contrariados.
História em quadros
O módulo contado do começo ao fim, um passo em cada figura, na ordem em que ele avança.
Mapa mental
Os tópicos do módulo, do centro para fora, na ordem em que ele os apresenta.
Painel do conhecimento
Conceitos
- Caso base: o regime que precisa funcionar sozinho, antes de qualquer outro, e para onde os outros caem quando falta o aparelho, a permissão da câmera do celular ou a sessão imersiva (a ligação por onde o programa entrega cada quadro ao visor, o aparelho preso à cabeça que cobre os olhos); os outros regimes acrescentam a ele, e ele não depende de nenhum. Neste percurso, o regime em janela.
- Câmera em órbita: a câmera que gira em volta do alvo, sempre olhando para ele, com a posição guardada em três números medidos a partir dele, o azimute, a elevação e a distância; com a órbita instalada, só ela escreve a câmera. As travas, o menor e o maior valor aceitos para a elevação e para a distância, existem cada uma por um defeito que ela evita, e os valores de 0,35 m e de 8 m são escolha do projeto.
- Enquadramento pela esfera envolvente: levar a câmera ao ponto em que o objeto aparece inteiro na tela. A esfera envolvente tem centro no centro da caixa do que aparece e raio de metade da diagonal dela; o centro vira o alvo, a distância pedida sai da conta com a margem (1,25, para a cena não grudar nas bordas), e a concedida é a pedida presa entre as travas. A esfera, e não a caixa, porque ocupa a mesma altura na tela vista de qualquer direção; e a caixa que entra na conta é a do que aparece na tela, sem o escondido.
- Peça coberta pela órbita: a peça do domínio que a órbita consegue enquadrar: a peça existe na cena, e a fração da altura (quanto da altura da tela o diâmetro da esfera ocupa), na distância concedida, é no máximo 1. A cobertura é da câmera e da tela, e não do corpo de quem usa.
- Folga: o teto (o tempo que o programa tem para cada quadro) menos o custo médio (o tempo que o trabalho do próprio programa leva por quadro), só em milissegundos; sai do custo, e não do intervalo entre imagens, que responde a outra pergunta: se alguma imagem foi perdida.
- Limite de um regime: uma coisa que o regime não oferece, em quatro partes: nome, o que falta, a razão técnica de faltar e o que a falta impede de demonstrar; a última separa o limite de uma lamentação.
- Profundidade inferida: a distância calculada a partir de pistas da própria imagem, a perspectiva, a oclusão (o objeto da frente tampando o de trás) e o tamanho relativo. Inferida não é ausente: o que ela não sustenta é julgar, sem girar a câmera, qual de duas peças próximas está mais perto.
- Escala corporal e alcance de braço: a comparação do tamanho das coisas da cena com o corpo de quem as vê, e a distância até onde a mão chega sem dar um passo; as duas são medidas contra o corpo, e nenhum código dentro do regime em janela as conserta.
- Aferição de um limite: o confronto do que o limite afirma com o que o programa em execução sabe, em três resultados: confirmado, contrariado e inconclusivo; o terceiro não é falha da aferição.
Exemplos
- A escada rolante sem energia, que ainda leva ao outro andar, a pé, e o ambiente que sem o visor não leva ninguém a lugar nenhum.
- Três visores para quarenta pessoas: a janela abre em todos os computadores e celulares da sala ao mesmo tempo, e quem assiste à apresentação vê a tela.
- A câmera que passa de 90 graus de elevação: a imagem dá meia-volta, e o arrasto passa a girar ao contrário.
- O botão que escreve a câmera direto: funciona até o primeiro arrasto, e a câmera salta de volta para a mesa.
- O lote, o conjunto de cópias desenhado numa só chamada de desenho (um só pedido à placa de vídeo), como as 24 peças de reposição de cada nível da prateleira, guarda a forma de uma cópia só: tratado como objeto comum, entra pela caixa dessa cópia, e a prateleira sai enquadrada do tamanho de uma peça de reposição, e não das 24.
- A peça renomeada na cena e não na lista do domínio: a conferência dá falta dela, e o resultado não diz nada sobre a órbita.
- A folga tirada do intervalo, que numa tela de sessenta imagens por segundo dá perto de zero, por mais leve que a cena seja.
- O indicador que desse confirmado para o alcance de braço: a mesma cara dos limites que foram medidos, e nenhum fundamento.
- A versão em janela apresentada como se fosse o regime imersivo, que nunca foi construído: a página tem de dizer o que a janela não oferece.
Diagrama
%%{init: {"flowchart": {"useMaxWidth": false}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart LR
J["Regime em janela<br/>caso base"]
I["Regime imersivo<br/>acrescenta o visor"]
A["Realidade aumentada<br/>acrescenta a sala"]
J -->|construído primeiro| I
J -->|construído primeiro| A
I -.->|cai quando falta o visor ou a sessão imersiva| J
A -.->|cai quando falta a permissão da câmera do celular| J
Evidências
- Em 1838, Charles Wheatstone levou à Royal Society um aparelho de dois espelhos e pares de figuras quase idênticas, desenhadas à mão porque a fotografia ainda não existia em público; cada espelho levava uma das figuras a um olho só, e quem olhava via um sólido que não estava em nenhuma das duas.
- O laboratório tem três visores para quarenta pessoas.
- Contado numa execução do programa: a câmera da abertura dá 1,62 m, 21,8 graus e azimute 0; a página parada escreve a câmera uma vez só; as cinco peças do domínio ficam cobertas, com frações de 37% a 65% da altura; a aferição dá confirmado, confirmado e inconclusivo.
- Numa execução fora da máquina de referência (o aparelho contra o qual a cena é orçada), o pior intervalo deu 16,8 ms, um décimo acima do teto, sem imagem perdida.
- Nenhum custo deste módulo vale como número do laboratório: a máquina de referência ainda não foi medida.
Referências
- WHEATSTONE, Charles. Contributions to the Physiology of Vision. — Part the First. On some remarkable, and hitherto unobserved, Phenomena of Binocular Vision. Philosophical Transactions of the Royal Society of London, v. 128, 1838.
- Na bibliografia da disciplina, a profundidade vista com os dois olhos e as pistas de profundidade são tratadas em SHERMAN e CRAIG, e em JERALD (The VR book).
Aplicações
- No projeto, as duas tarefas do módulo: entregar o regime que roda em qualquer máquina, com a câmera em órbita, a cena completa e o custo medido dentro do teto; e registrar o que esse regime não oferece, com o que cada falta impede de demonstrar.
- Sempre que faltar o visor, a permissão da câmera do celular ou a sessão imersiva, a janela é o destino da queda entre regimes, e ela é também o que vê quem assiste.
- No módulo seguinte, A camada de interação: ponteiro e seleção, o que entra se apoia na cena percorrida pela tela.
- Nos módulos do regime imersivo, a lista de limites é o contraste: o regime que conhece o chão e rastreia a mão se compara com ela.
Mapa conceitual
Escreva num papel: queda entre regimes, caso base, regime em janela, limite de um regime, gestos, botão de enquadramento, alcance de braço, aferição, travas, câmera em órbita, peça coberta pela órbita, folha do programa, alvo, esfera envolvente, fração da altura, conferência da entrega, caixa do que aparece, distância pedida, distância concedida, folga. Ligue os conceitos com setas, e escreva em cada seta um verbo que diga qual é a relação. Depois compare com o mapa.
Folha de consulta
A órbita
- alvo: o ponto para onde a câmera olha; azimute \alpha: o giro em volta dele visto de cima; elevação \varepsilon: o ângulo com que a câmera sobe acima da altura dele; distância d até ele
- com o alvo em (x_a, y_a, z_a): x = x_a + d\cos\varepsilon\,\operatorname{sen}\alpha; y = y_a + d\operatorname{sen}\varepsilon; z = z_a + d\cos\varepsilon\,\cos\alpha
- abertura: câmera em (0;\ 1{,}55;\ 1{,}50), alvo em (0;\ 0{,}95;\ 0): 1,62 m, 21,8 graus, azimute 0
- travas (o menor e o maior valor aceito): elevação de 0 a 85 graus; distância de 0,35 m a 8 m
Gestos
- arrastar: 0,35 grau por pixel; mão para a direita, o azimute diminui; para baixo, a elevação sobe
- roda: para baixo, distância × 1,12; para cima, ÷ 1,12; rolagem de lado: nada muda
- pinça (afastar ou aproximar dois dedos na tela): distância × (entre os dedos antes ÷ agora), o antes medido no pouso do segundo dedo
Enquadrar
- esfera envolvente: centro no centro da caixa do que aparece, e esse centro vira o alvo; raio \rho, metade da diagonal
- d_{\text{pedida}} = \rho / \operatorname{sen}(\theta/2) \times m; \theta, o campo de visão (o ângulo que a tela mostra de cima a baixo), 55 graus; m, a margem, 1,25
- distância concedida: a pedida presa entre 0,35 m e 8 m
- o escondido não entra na caixa; o lote (o conjunto de cópias desenhado numa só chamada de desenho) entra pela caixa de todas as cópias; caixa vazia: a câmera não se move
Cobertura
- fração da altura = \tan(\operatorname{arcsen}(\rho/d)) / \tan(\theta/2), com d a distância concedida
- peça coberta: existe na cena, com fração no máximo 1
| Peça | Distância pedida | Fração a 0,35 m |
|---|---|---|
| corpo | 0,24 m | 51% |
| eixo | 0,30 m | 65% |
| engrenagem grande | 0,30 m | 64% |
| engrenagem pequena | 0,18 m | 37% |
| tampa do mecanismo | 0,25 m | 52% |
- cobertura do domínio: 5 de 5, pela conta que move a câmera
Folga e imagem perdida
- teto da página: 1.000 / 60 \approx 16{,}7 ms, e não os 11,1 ms do visor (o aparelho preso à cabeça que cobre os olhos)
- folga = teto − custo médio (o tempo do trabalho do próprio programa): 0,3 ms de custo dão 16,4 ms; 3 ms dão 13,7 ms
- imagem perdida: intervalo (o tempo real entre duas imagens) de 2 \times 1.000/60 \approx 33{,}3 ms; acusada acima de 1{,}5 \times 16{,}7 = 25{,}05 ms, no pior intervalo (o mais longo dos últimos 120 quadros)
- vale a medida de 120 quadros; a tirada ao abrir carrega trabalho que só se faz uma vez
Limites e aferição
- quatro partes: nome; o que falta; por que falta; o que a falta impede de demonstrar
- impede de demonstrar: qual de duas peças próximas está mais perto, sem girar a câmera (profundidade inferida); que o tampo tem a altura certa para trabalhar de pé (sem escala corporal: a cena comparada ao corpo de quem usa); que uma peça está longe demais para ser apanhada sem dar um passo (sem alcance de braço)
- computador de mesa, sem visor: confirmado, confirmado e inconclusivo
Erros previsíveis
- “a janela é um degrau provisório”: é o caso base e o destino da queda entre regimes
- “a janela não tem profundidade”: tem, inferida das pistas da própria imagem; falta-lhe a diferença entre as imagens dos dois olhos
- “no visor, a diferença entre as imagens dos dois olhos dá a distância exata”: ela é uma pista que uma imagem sozinha não tem, e só isso se afirma dela
- “a escala corporal virá numa versão futura da janela”: a janela não sabe a altura dos olhos de ninguém; a escala chega com o regime que conhece o chão
- “os três limites são defeitos da implementação”: vêm de a cena aparecer numa tela plana, a uma distância que não é a do corpo de quem usa
- “a órbita atualiza a câmera a cada quadro”: com a órbita instalada, só ela escreve a câmera, e só quando um gesto chega ou um botão pede
- “1,12 para afastar e 0,88 para aproximar é simétrico”: 1{,}12 \times 0{,}88 = 0{,}9856, e cada ida e volta perde 1,44% da distância
- “a elevação pode ir até 90 graus”: a 90, olhar para o alvo não diz qual lado fica em cima; passando, a imagem vira e o arrasto inverte
- “toda peça enquadrada ocupa 76% da altura da tela”: 76% é a esfera na distância pedida; na trava mínima, as cinco ocupam de 37% a 65%
- “a peça está coberta quando a distância pedida fica abaixo da máxima”: só a fração decide; uma esfera de 3,3 m de raio pede 8,93 m, acima da máxima, e a 8 m ocupa 87%: coberta
- “a caixa pronta da biblioteca de desenho serve para enquadrar”: soma o volume de contato escondido, maior que a peça
- “a janela tem alcance de braço, porque a órbita cobre todas as peças”: cobrir todas com o mesmo gesto, a qualquer distância, é a razão de não haver alcance de braço
- “inconclusivo é uma falha da aferição”: confirmar o que nada no programa mede daria a mesma cara dos limites medidos, sem fundamento
- “confirmado prova que o limite vale em qualquer aparelho”: com um visor apresentando a imagem, profundidade e escala corporal saem contrariadas
- “a folga é o teto menos o intervalo”: o intervalo segue o ritmo da tela: a folga tirada dele dá perto de zero em qualquer cena
- “pior intervalo acima do teto é imagem perdida”: 16,8 ms ficou um décimo acima, sem perda; acusa-se acima de 1,5 vez o teto
- “imagem perdida com o custo médio dentro do teto veio de fora do código”: a média dilui um quadro lento do código; a folha do programa diz onde procurar, não quem atrasou