2012-04-08 2 views
0

У меня есть последовательность точек, и у меня есть объект, который должен двигаться по пути, описанному этими точками.Перемещение по пути точек с четной скоростью

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

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

ответ

1

Что-то вроде этого? Чтобы найти сегмент в определенное время, проведите по всем сегментам, добавьте длину сегмента до достижения целевого времени.

public int findSegment(int [] segments, int time) { 
    time_so_far = 0; 
    int i = 0; 
    while (time_so_far < time) { 
    time_so_far += segments[i]; 
    i++; 
    } 
    return i-1; 
} 

Если длины сегментные расстояния, и вы рассматриваете скорость, которая не 1, то вам нужно сделать time_so_far += segments[i]/speed

1

Beofre начала назначать временные моменты каждой точки: первая точка получает время = 0, каждая следующая точка получает время [i + 1] = время [i] + расстояние (i, i + 1)/скорость.

Тогда для каждый момент времени вы можете вычислить позицию следующим образом:

  1. Найти первую точку, для которой время [я] < = current_time
  2. Найти точное положение: точка [я] + (current_time-time [i]) * (точка [i + 1] -точка [i])
Смежные вопросы