
Ich verwende 2 Displays (1920x1080 Touchscreen links, 1440x900 rechts). Wenn ich jemals
xinput set-prop "Acer T230H" "Coordinate Transformation Matrix" 0.566 0 0 0 .71111 0 0 0 1
(als Matrixwert)
0.566 0 0
0 0.71111 0
0 0 1
Die x-Koordinate wird korrekt berechnet, aber die y-Koordinate muss mit ~1,2 multipliziert werden, um korrekt zu sein.
Wo muss ich meine 1.2 platzieren?
Antwort1
Wenn Sie die Y-Koordinate skalieren möchten, sollten Sie 0,71111 mit Ihrem Skalierungsfaktor 1,2 multiplizieren. Die allgemeine Formel lautet:
wenn die Matrix
a b c
d e f
g h i
dann lautet die Formel
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)
Dies ist eine projektive Transformation. In fast allen Fällen (also in allen Fällen, es sei denn, Ihr Display ist ein Beamer, der schräg auf eine Wand projiziert) benötigen Sie nur eine lineare Transformation, also setzen Sie g h i
auf 0 0 1
.
Wenn Sie jemals fortgeschrittenere Dinge tun möchten, sollten Sie wissen, dass für die Zwecke dieser Berechnung old_x/new_x usw. im Bereich zwischen 0 und 1 liegen.