C# Алгоритм маршрутизации для перемещения объекта из точки (X, Y) в точку (X, Y)
Данный объект, который может двигаться вперед, назад, влево и вправо в заданной точке X,Y. Как эффективно направить объект в точку X,Y, используя данную механику движения наиболее эффективным и естественным для человека способом.
Объект доступен для движения в режиме реального времени, вы можете сказать им "startMoving" и "stopMoving". Хотя в качестве дополнительного поворота и части, с которой у меня возникают проблемы, является то, что облицовка объекта никогда не известна, известно только его текущее местоположение, поэтому алгоритм должен "определять" направление. Местоположение объекта обновляется в отдельном потоке с интервалом 500-1 с. "Запрос" на обновление местоположения в алгоритме выполняется в любой момент, но он не доступен немедленно, и алгоритм должен учитывать это. Делать что-то вроде requestAndWaitForCoordUpdate() вполне приемлемо, но, скорее всего, не нужно.
Вот пример кода:
public int[] currentCoords;
public void movement() {
currentCoords[0] = 1005; // starting y coord
currentCoords[1] = 1007; // starting x coord
moveTo(1050, 1025);
}
public void moveTo(int x, int y) {
... how?
}
public void threadUpdatingCoords() {
... periodically check for source coord updates
... between 200ms and 1000ms apart.
}
1 ответ
Если я правильно понимаю, вам нужно определить ваше направление.
Кроме того, вы можете запросить текущую позицию.
Можете ли вы сохранить свои последние координаты перед переходом на новую позицию?
Если это так, используйте базовую тригонометрию, чтобы извлечь угол, в котором движется ваш объект, основываясь на последней координате и новой координате.