Affine
類作爲延伸Transform
類在JavaFX
。是否可以在JavaFX中實現透視變換?
這使人產生錯覺,除了仿射之外,還有一些類型的變換。
UPDATE
在JavaFX 2.x
Transform
類包含只對特定的矩陣元素,其中包括3×4矩陣的12種元素的三維仿射變換的吸氣劑。任何類的使用只能依賴於這些元素,所以任何表示的轉換都是仿射的。
這意味着2.x版本的設計不好,因爲基本類只能表示仿射變換,而Affine
是它的子類。這是錯誤的,因爲Affine
應該成爲基礎班。
在JavaFX 8
Transform
類有更好的設計。除了獲取者之外,它還索引對矩陣元素的訪問權限並確定matrix type。它也有transform()
方法,它們進行實際轉換。
這意味着,該用法既可以依賴於transform()
方法,也可以依賴於矩陣元素獲取器。
如果可以保證,JavaFX
的所有內部部分依賴於transform()
方法,那麼這個類可以擴展並且可以實現透視變換。可能它甚至可以在發佈版本JavaFX8
中實施。
現在的問題是:可以保證,JavaFX
只依賴transform()
方法嗎?
如果我不能擴展'Transform'來獲得非仿射變換,那麼JavaFX中的類層次結構是錯誤的,對吧?他們應該以'Affine'作爲基地,其他人作爲後代。 –
我認爲這個層次是正確的。以Transform爲基礎,未來(例如Java 9)版本可以用NonAffineTransform子類擴展Transform,但如果Affine是root,那麼這就沒有意義了。 – jewelsea
那麼,有可能將'Transform'擴展成一些非仿射的? –