
Utilizo 2 pantallas (pantalla táctil de 1920x1080 a la izquierda, 1440x900 a la derecha). Si alguna vez uso
xinput set-prop "Acer T230H" "Coordinate Transformation Matrix" 0.566 0 0 0 .71111 0 0 0 1
(como valor de matriz)
0.566 0 0
0 0.71111 0
0 0 1
la coordenada x se calcula correctamente, pero la coordenada y debe multiplicarse por ~1,2 para que sea correcta.
¿Dónde tengo que colocar mi 1.2?
Respuesta1
Si desea escalar la coordenada y, debe multiplicar 0,71111 por su factor de escala 1,2. La fórmula general es:
si la matriz es
a b c
d e f
g h i
entonces la fórmula es
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 es una transformación proyectiva. En casi todos los casos (es decir, en todos los casos, a menos que su pantalla sea un proyector que se proyecte oblicuamente en una pared), solo necesita una transformación lineal, por lo que la configura g h i
en 0 0 1
.
Si alguna vez vas a hacer cosas más avanzadas, entonces debes saber que para el propósito de este cálculo, old_x/new_x, etc. están en el rango entre 0 y 1.