
Eu uso 2 monitores (tela sensível ao toque 1920x1080 à esquerda, 1440x900 à direita). Se algum dia eu 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 meu 1.2?
Responder1
Se quiser dimensionar 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, todos os casos, a menos que seu monitor seja um projetor que se projeta distorcido em uma parede), você só precisa de uma transformação linear, então defina g h i
como 0 0 1
.
Se você for fazer coisas mais avançadas, então você deve saber que para o propósito deste cálculo, old_x/new_x etc estão no intervalo entre 0 e 1.