Подход к 2D положению - PullRequest
1 голос
/ 20 июня 2011

Я начал работать над концепцией, которая требует от меня найти способ сместить прямоугольник к заданной точке с заданной скоростью.Я разрабатываю для Android, так что это относительно критично по скорости (он будет рассчитываться также для каждого кадра, возможно, для сотен объектов).1004 *

Как видите, для этого пути требуется квадратный корень, который, как я знаю, довольно дорог.Я подумал об альтернативе, которая использует тригонометрию, но это также дорого.

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;

Есть ли другие способы?Если нет, то какое из моих решений будет быстрее?Спасибо за любую помощь.

1 Ответ

2 голосов
/ 20 июня 2011

Очень распространенный трюк, который вы можете использовать, это поставить все в квадрат / степень двух / ^ 2

таким образом, вместо использования sqrt, вы просто используете

length = (diff_x * diff_x) + (diff_y * diff_y);
diff_x*diff_x/length
...