2010-02-09 81 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