2010-02-09 85 views
1

鑑於2 java AffineTransform項目,我如何插入它們之間。我需要屏幕上的圖像緩慢地從應用了一個矩陣的位置/旋轉/比例移動到另一個。AffineTransform線性插值

最好這應該是合理的效率,因爲它每次遊戲畫圖時都會運行。

我現在的(真正哈克)解決方案是getTranslate()從兩個矩陣,它們之間的線性插值,然後創建一個新的矩陣(這並不完全工作,因爲沒有相當於旋轉)

回答

1

通過getMatrix()獲取每個變換的仿射矩陣。逐步將一個矩陣插值到另一個矩陣,在每一步通過AffineTransform(float []矩陣)創建一個新的變換。

+0

嘿,我接受了這個,但實施後發現有些奇怪。當相機從一個矩陣到另一個矩陣時,它會將所有東西都縮小。這實際上看起來很酷,所以它不是一個問題,但任何想法爲什麼這樣做? – Martin 2010-02-11 12:30:59

+0

你在getMatrix()方法中獲得4或6個值嗎?如果6是兩個元素{0,0,1}的最後3個元素?你給AffineTransform構造函數賦值了多少個值? – 2010-02-11 21:42:38

+0

您還可以將兩個轉換分解爲相同的平移/旋轉/縮放/剪切序列,並分別對每個子轉換進行變形。子變換將在每個步驟中組合以形成當前的AffineTransformation - 從而導致更少的令人費解的視覺變換。 – 2010-02-12 15:47:26