旋转对象然后翻译它

时间:2013-09-22 09:34:06

标签: java graphics rotation translate-animation

我有一个由三个变量描述的对象(即矩形):x (int), y (int) - 对象的位置和rangel (float) - 指示对象方向移动的天使。现在我想用它的方向(天使)来转换对象中的对象。我想出了如何计算它的新坐标:

x += (int)(shift*Math.sin(Math.toRadians(rangel));
y -= (int)(shift*Math.cos(Math.toRadians(rangel));

但我不确定这种方法是否足够有效。你现在有没有其他方法来执行这个操作,但是这比上面提到的更快?感谢。

3 个答案:

答案 0 :(得分:1)

根据this thread Math.sin不一定使用最佳实现。 由于你已经转换为int,我强烈建议使用一些近似而不是Math.sin。我发现this post似乎为近似sin(x)提供了准确而快速的算法。我很确定你会找到cos(x)的近似值,或者可以从给定的解决方案中自己推导出它。

此外,我认为对于忽略小数精度的特殊情况,有更快的近似值。

祝你好运, SAM

答案 1 :(得分:0)

这是以角度平移对象的正确方法。如果角度是任意的,则没有更快的方法。

答案 2 :(得分:0)

首先计算Math.toRadians(rangel)并将其存储在局部变量中可能稍快一些,因此您只需计算一次,而不是两次。但是这样做的节省很小。除此之外,这看起来对我来说非常理想。

但请注意,如果rangel只有少量不同的可能值(例如,您只能在24个不同的方向上移动对象,或类似的东西),那么你就会通过使用sincos值的查找表来节省一些费用。

相关问题