Я хочу нарисовать предсказанную линию объекта, который движется по пути под влиянием силы тяжести нескольких движущихся аттракторов.
В каждом кадре я вычисляю прогнозную линию, предварительно вычисляя скорость во времени.
На каждом шаге я вызываю метод GetGravity с фактическим iterationPosition.
Это работает постепенно и очень точно. Я пытаюсь заставить это работать для движущихся аттракторов. Это означает, что мне нужна позиция аттрактора в определенный момент.
Проблема в том, что я не знаю этот момент.
Какой-то псевдокод, что происходит:
Predict() {
iterations = 1500;
predictionPoints.Clear();
while(i < maxIterations) {
iterationVelocity = Gravity.getGravity(iterationPosition, rigidbody);
toPosition = iterationPosition + iterationVelocity;
predictionPoints.Add(toPosition)
}
DrawLine(predictionPoints);
}
Каждый движущийся объект также может быть аттрактором, и если объект движется, я хочу, чтобы он нарисовал линию предсказания.
Движущийся объект знает только предсказанные точки во время цикла while.
Но если я попытаюсь получить к нему доступ, он будет пуст.
Некоторая отладка показывает, что код выполняется для каждого кадра следующим образом:
Attractor1.Predict();
Attractor2.Predict();
Attractor3.Predict();
Если я хочу получить доступ к точкам [356] из Аттрактора 3, когда я вычисляю траекторию Аттрактора 1, точки из Аттрактора 3 еще не существуют.
У вас есть идеи, как я могу решить проблему?