看看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
。
对我来说,这看起来像直线代数。我检查了链接,看看你在说什么。当页面开始旋转主题时,他们拥有的第一张图像充满了余弦和正弦。要意识到的是,当您处理以 90 度为增量的旋转时,cos(a)、sin(a)、-cos(a) 等都会变成 1 和 0(也可能是 -1)。对我来说,这真的是一道数学题。查看关于旋转矩阵的维基百科页面作为参考:https ://en.wikipedia.org/wiki/Rotation_matrix 。
关于翻译回原空间;如果“原点”不在中心,则旋转会将一些元素从原始绝对位置移开。本文更具体地讨论了设备映射和计算机图形,并包括有关转换和缩放因子的信息(查看仿射变换部分)。 https://en.wikipedia.org/wiki/Transformation_matrix