JavaFX仿射变换来自2D变换矩阵

时间:2013-10-23 13:20:33

标签: java math matrix 3d javafx

我开始使用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仿射变换?

1 个答案:

答案 0 :(得分:1)

你所拥有的是2D空间的投影变换矩阵,JavaFX期望一个3D空间。

假设您没有任何投影(因为您需要2D 仿射转换),您的矩阵应如下所示:

| mxx mxy tx |
| myx myy ty |
|  0   0   1 |

对于其他参数,您有mzz = 1mxz = 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 |