我开始使用 JavaFX,并且正在努力处理转换的方式。我知道您可以向节点添加各种变换,但我希望能够由于用户与节点的交互而累积变换。
我能够为我想要执行的变换创建一个 2D 仿射变换矩阵。例如:
| a b c |
| d e f |
| g h i |
JavaFX 仿射变换定义为:
| mxx mxy mxz tx |
| myx myy myz ty |
| mzx mzy mzz tz |
我的问题是:如何将转换矩阵转换为 JavaFX 仿射转换?
您拥有的是 2D 空间的投影变换矩阵,而 JavaFX 期望 3D 空间的投影变换矩阵。
假设您没有任何投影(因为您需要 2D仿射变换),您的矩阵应如下所示:
| mxx mxy tx |
| myx myy ty |
| 0 0 1 |
对于您拥有的其他参数mzz = 1和mxz = myz = mzx = mzy = tz = 0。
因此,JavaFX 矩阵(使用您的原始符号)应如下所示:
| a b 0 c |
| d e 0 f |
| 0 0 1 0 |
| 0 0 0 1 |
编辑:我认为当您进行非仿射变换时,JavaFx 矩阵应如下所示:
| a b 0 c |
| d e 0 f |
| 0 0 1 0 |
| g h 0 i |