O que eu multiplico neste cálculo de matriz para configurar minha tela sensível ao toque?

1

Eu uso dois monitores (1920x1080 touchscreen à esquerda, 1440x900 à direita). Se eu algum dia usar

xinput set-prop "Acer T230H" "Coordinate Transformation Matrix" 0.566 0 0 0 .71111 0 0 0 1

(como valor da matriz)

0.566    0       0
0        0.71111 0
0        0       1

a coordenada x é calculada corretamente, mas a coordenada y deve ser multiplicada por ~ 1.2 para estar correta.

Onde devo colocar o meu 1.2?

    
por Peter Rader 21.11.2011 / 14:18

1 resposta

0

Se você quiser escalonar a coordenada y, você deve multiplicar 0.71111 pelo seu fator de escala 1.2. A fórmula geral é:

se a matriz for

a b c
d e f
g h i

então a fórmula é

new_x = (a * old_x + b * old_y + c) / (g * old_x + h * old_y + i)
new_y = (d * old_x + e * old_y + f) / (g * old_x + h * old_y + i)

Esta é uma transformação projetiva. Em quase todos os casos (ou seja, em todos os casos, a menos que sua exibição seja um projetor que projeta de forma áspera em uma parede), você só precisa de uma transformação linear, portanto, defina g h i para 0 0 1 .

Se você for fazer alguma coisa mais avançada, deve saber que, para a finalidade deste cálculo, old_x / new_x etc estão no intervalo entre 0 e 1.

    
por Timo Kluck 21.11.2011 / 14:36