Что мне нужно умножить в этом матричном расчете, чтобы настроить сенсорный экран?

Что мне нужно умножить в этом матричном расчете, чтобы настроить сенсорный экран?

Я использую 2 дисплея (1920x1080 сенсорный экран слева, 1440x900 справа). Если я когда-нибудь буду использовать

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

(как значение матрицы)

0.566    0       0
0        0.71111 0
0        0       1

Координата x вычисляется правильно, но координату y необходимо умножить примерно на 1,2, чтобы получить правильное значение.

Где мне разместить 1.2?

решение1

Если вы хотите масштабировать координату y, вам следует умножить 0,71111 на ваш коэффициент масштабирования 1,2. Общая формула:

если матрица

a b c
d e f
g h i

тогда формула будет

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)

Это проективное преобразование. Почти во всех случаях (то есть во всех случаях, если только ваш дисплей не является проектором, который проецирует изображение на стену под углом) вам просто нужно линейное преобразование, поэтому вы g h iустанавливаете 0 0 1.

Если вы когда-нибудь собираетесь делать что-то более сложное, то вам следует знать, что для целей этого расчета old_x/new_x и т. д. находятся в диапазоне от 0 до 1.

Связанный контент