Проблема: перемещать объект по прямой линии с постоянной скоростью в декартовой системе координат (только x, y).Скорость обновления нестабильна.Скорость движения должна быть близкой к точной, а объект должен приближаться к месту назначения.Источник и пункт назначения могут быть где угодно.
Дано: адреса источника и назначения (x0, x1, y0, y1) и скорость произвольного значения.
Помощь: Естьответ на SO относительно этого, и это хорошо, однако это предполагает, что дано общее время, потраченное на поездки.
Вот что у меня есть: <pre>
x0 = 127;
y0 = 127;
x1 = 257;
y1 = 188;
speed = 127;
ostrich.x=x0 //plus some distance along the line;
ostrich.y=y0 // plus some distance along the line;
//An arbitrarily large value so that each iteration increments the distance a minute amount
SPEED_VAR = 1000;
xDistPerIteration = (x1 - x0) / SPEED_VAR;
yDistPerIteration = (y1 - y0) / SPEED_VAR;
distanceToTravel = ;//Pythagorean theorum
limitX = limit1 = 0; //determines when to stop the while loop
<br>//get called 40-60 times per second
void update(){
//Keep incrementing the ostrich' location
while (limitX < speed && limitY < speed) {
limitX += Math.abs(xDistPerIteration);
limitY += Math.abs(yDistPerIteration);
ostrich.x += xDistPerIteration;
ostrich.y += yDistPerIteration;
}
distanceTraveled -= Math.sqrt(Math.pow(limitX, 2) + Math.pow(limitY, 2));
if (distanceTraveled <=0)
//ostrich arrived safely at the factory
}
Этот код выполняет свою работу, однако он занимает исключительно 18% программного времени в программе, интенсивно использующей процессор.Это фигня, программно и с точки зрения производительности.Любые идеи о том, что здесь делать?