我开始使用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仿射变换?
答案 0 :(得分:1)
你所拥有的是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 |