Estrutura da matriz para rotação de tela

1

Posso definir a rotação da minha tela para invertida com:

xrandr -o inverted
xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1

e de volta ao normal com:

xrandr -o normal
xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1

Encontrei um HowTo aqui: link
Então eu acho que para (90 ° para a direita) será:

# ⎡ 0 -1 1 ⎤
# ⎜ 1  0 0 ⎥
# ⎣ 0  0 1 ⎦
right='0 -1 1 1 0 0 0 0 1'

Mas qual é a 'Matriz de Transformação de Coordenadas' à direita?

    
por rubo77 20.06.2014 / 02:05

2 respostas

2

A partir da pergunta, é uma matriz de transformação de coordenadas padrão.

Então:

⎡x_out⎤   ⎡ a b c ⎤   ⎡ x_in ⎤
⎜y_out⎥ = ⎜ d e f ⎥ * ⎜ y_in ⎥
⎣z_out⎦   ⎣ 0 0 1 ⎦   ⎣ z_in ⎦

com z_out = z_in = 1.

Ou seja,

x_out = a * x_in + b * y_in + c
y_out = d * x_in + e * y_in + f

A matriz de exemplo que você deu para a rotação correta

⎡ 0 -1 1 ⎤
⎜ 1  0 0 ⎥
⎣ 0  0 1 ⎦

significa assim

x_out = 1 - y_in
y_out = x_in

para rotação à esquerda, seria o contrário, ou seja:

x_out = y_in
y_out = 1 - x_in

dando a matriz

⎡  0 1 0 ⎤
⎜ -1 0 1 ⎥
⎣  0 0 1 ⎦
    
por 20.06.2014 / 02:24
0

A última matriz ausente será

left='0 1 0 -1 0 1 0 0 1'

Eu consegui escrever um script que rotaciona o script toda vez que você o chama:

link

    
por 20.06.2014 / 02:25