看一下libinput的坐标变换矩阵的官方文档: https://wayland.freedesktop.org/libinput/doc/1.1.0/group__config.html#ga09a798f58cc601edd2797780096e9804
接近尾声时它指出:
请注意,任何旋转都需要额外的平移组件来将旋转后的坐标平移回原始设备空间。
这些翻译成分是如何确定的。坐标逆时针旋转90度的变换矩阵为:
0 1 0
-1 0 1
0 0 0
本例中的平移坐标为0
和1
。
答案1
对我来说,这看起来像是直线代数。我检查了链接以了解您在说什么。当页面开始讨论旋转主题时,他们拥有的第一个图像充满了余弦和正弦。需要意识到的是,当您处理以 90 度为增量的旋转时,cos(a)、sin(a)、-cos(a) 等都变成 1 和 0(也可能是 -1)。对我来说这确实是一个数学问题。查看关于旋转矩阵的维基百科页面作为参考:https://en.wikipedia.org/wiki/Rotation_matrix。
关于翻译回原来的空间;如果“原点”不在中心,旋转会使一些元素远离原始的绝对位置。本文更具体地讨论了设备映射和计算机图形,并包括有关平移和缩放因子的信息(请查看仿射变换部分)。 https://en.wikipedia.org/wiki/Transformation_matrix