Java Turtle перемещается/поворачивается на 1 пиксель/градус за раз. Пока все хорошо, но я что-то упускаю?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java Turtle перемещается/поворачивается на 1 пиксель/градус за раз. Пока все хорошо, но я что-то упускаю?

Сообщение Anonymous »


Черепаха может вращаться со скоростью 1° в секунду. Скорость движения черепахи равна единице расстояния («1 пиксель») в секунду. Черепаха не может двигаться и вращаться одновременно. При этом, чтобы по-прежнему видеть дорогу, черепаха движется только вперед (т. е. не поворачивается). Пусть C — точка с координатами [x,y]. За какое кратчайшее время в секундах первая черепаха достигнет точки С? Помните, что черепаха может вращаться как по часовой стрелке, так и против нее.


Добавьте метод timeToArrival в класс TurtlesWorld. Метод timeToArrival принимает 2 параметра x, y — координаты точки C и возвращает наименьшее время в секундах, за которое любая из черепах сможет добраться до точки C.

Проблема в том, что когда я вставляю его, чтобы проверить в оценщике курса, значения различаются.
На данный момент я определил свой метод для:
  • перебирать массив черепах
  • получить их расстояния и углы к точке
  • Если угол больше 180 (углы берутся другим методом, который принимает только угол по часовой стрелке)
    затем измените угол на угол = 360 - угол;
  • Поскольку вращение и движение составляют 1 секунду за раз, это 1: 1, поэтому мы добавляем необходимые обороты и расстояние к затраченному времени.
  • Мы сравниваем время, чтобы определить, какое время является самым коротким.
  • Возвращаем лучшее время
    li>
Я чувствую, что в моей мысли есть ошибка, но не могу прямо указать на нее.
Это будет шаг 3 или 4? Учитывая, что это десятичные числа в расстоянии и градусах
public double timeToArrival(double x, double y) {
double angTo;
double time = 0;
double bestTime = Double.MAX_VALUE;
for (int i = 0; i < this.turtles.length; i++) {
this.turtles.setDirection(0);
this.turtles.penDown();
angTo = this.turtles.directionTowards(x, y);
distTo = this.turtles.distanceTo(x, y);
// angle integer is arbitrary because I had the turtles move to see whether they
// reach the point (they do)
int angle = 1;
if (angTo > 180) {
angTo = 360 - angTo;
angle = -1;
}
time += angTo + distTo;

if (time < bestTime) {
bestTime = time;
}
time = 0;
}
return bestTime;
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... missing-so
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»