对于不熟悉的人来说,UV是矩形精灵的一种标准化坐标。因此,子画面的左下角。所以像
(0, 1) (1, 1)
-------
| |
-------
(0, 0) (1, 0)
这些坐标不会改变精灵旋转,缩放或改变其旋转中心的方式。
我的目标是在屏幕空间上给定一点的情况下,将UV放置在精灵上。我可以做一些有趣的事情,例如确定一个点在精灵上还是在精灵上。
为此,我涉及的线性代数有很多麻烦。
所以这是我到目前为止所做的工作。在此应用程序中,所有内容均为2D,但是我为所有内容使用3x3矩阵,以便我可以正确表示转换。每次我对2D点进行操作时,都会像z vec3(v.x, v.y, 1.0)
这样用z坐标填充它,以便可以相乘。
我们有以下坐标空间:
到目前为止,我已经创建了以下3x3矩阵:
*此矩形只是每个对象都相同的[(0,0),(1、0),(0、1),(1、1)]矩形。只是每个精灵都会翻译。
因此,从该矩形对精灵x上的点p
的变换是:
p * L * A
我想出了最棘手的时间来解决矩阵M,这个矩阵应该从Touch Space转换为X Space。
有几个原因。
对此我感到非常困惑,因为无论您是vector * Matrix
还是Matrix * vector
,结果似乎都是不同的。我不知道哪一个是正确的。