Что мне умножить в этом матричном расчете для настройки моего сенсорного экрана?

Я использую 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
задан 22 November 2011 в 03:08

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.

0
ответ дан 22 November 2011 в 03:08

Другие вопросы по тегам:

Похожие вопросы: