我开始研究一个概念,该概念要求我找到一种方法以给定速度将矩形移向给定点。我正在为 Android 开发,所以这对速度来说是比较关键的(对于可能数百个对象,每帧都会计算它。)
我能想到的解决方案如下:
float diff_x = x2 - x1;
float diff_y = y2 - y1;
float length = sqrt((diff_x * diff_x) + (diff_y * diff_y));
float dir_x = diff_x / len;
float dir_y = diff_y / len;
float move_x = dir_x * MOVE_SPEED;
float move_y = dir_y * MOVE_SPEED;
如您所见,这种方式需要一个平方根,我知道这非常昂贵。我想到了一个替代方案,它使用三角函数,但它也很昂贵。
float diff_x = x2 - x1;
float diff_y = y2 - y1;
float angle = atan2(diff_y, diff_x);
float move_x = sin(angle) * MOVE_SPEED;
float move_y = cos(angle) * MOVE_SPEED;
还有其他方法吗?如果没有,我的哪个解决方案会更快?谢谢你的帮助。