Affine
类是作为JavaFX
中Transform
类的扩展而创建的。
这使人产生一种错觉,认为除了仿射变换之外还可能有其他类型的变换。
更新
在JavaFX 2.x
中,Transform
类仅包含特定矩阵元素的getter,其中包括3D仿射变换的3x4矩阵的12个元素。任何类的使用都只能依赖这些元素,因此任何表示的变换都是仿射的。
这意味着2.x版本的设计有缺陷,因为基本类只能表示仿射变换,而Affine
是它的子类。这是错误的,因为Affine
应该成为基本类。
这意味着,使用可以依赖于transform()方法或矩阵元素的getter。
如果可以保证JavaFX的所有内部部件都依赖于transform()方法,那么可以扩展此类并实现透视变换。甚至可以在JavaFX8的发布版本中实现它。
问题是:可以保证JavaFX仅依赖于transform()方法吗?
Transform
以获得非仿射变换,那么在JavaFX中类层次结构就是错误的,对吗?他们应该将Affine
作为基类,其他类作为子类。 - Suzan Cioc