Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Вычисление координаты движущегося объекта в момент времени.
#1
Решил чисто для себя написать программку, в которой персонаж перемещается в координатной плоскости (в дальнейшем вставлю логику в свой сервер который пишу с 0).
Столкнулся со следующей проблемой.
вот код
Код:
    public void move(int x, int y) throws InterruptedException
    {
        double distance;
        double time;
        double currentLocX;
        double currentLocY;
                //Формула расчета расстояния от точки до точки в координатной плоскости.
        distance = Math.sqrt((x - locX)*(x - locX) + (y - locY)*(y - locY));
        time = distance/this.speed;
        System.out.println("Персонаж должен пройти расстояние равное :" + distance);
        for(int i = 0; i < time; i++)
        {
            Thread.sleep(1000);
            currentLocX = [color=Red]КАК ВЫЧИСЛИТЬ???[/color] //координата по X в данный момент времени
            currentLocY = [color=red]КАК ВЫЧИСЛИТЬ???[/color] //координата по Y в данный момент времени
            System.out.println("Персонаж прошел 1 секунду. И его координаты : X = " + currentLocX + " Y = " + currentLocY);
        }
        System.out.println("Персонаж дошел до конечной точки.");
    }

Копался в исходниках лыжи но с ихними методиками так и не разобрался,
да к тому же хотелось бы самому дойти до решения а не тупо копипастить.

Да и еще вопрос, как какой промежуток времени поставить в прозвон,
да так чтобы не перегружать процессор но и не терять качества. И стоит ли вообще использовать sleep, быть может есть вариант получше? знания java есть, но мало практики в написании собственных программ, вот и решил исправлять этот пробел
Ответ
#2
distance = time * speed
тут уже школа

Откровенно говоря...
Вы представьте этот алгоритм в игре. где бы оказался Марио через 10 лет
Ответ
#3
вот задали персу бежать дистанцию 100 единиц, есть начальная координата, есть конечная (x0,y0) и (x1,y1), допустим скорость его 10 единиц в секунду. То есть грубо говоря через 10 секунд он добежит до цели.
НО во время того как он бежит как узнать его координату в ДАННЫЙ МОМЕНТ ВРЕМЕНИ... (вы не так меня поняли...)
Ответ
#4
krisadr Написал:вот задали персу бежать дистанцию 100 единиц, есть начальная координата, есть конечная (x0,y0) и (x1,y1), допустим скорость его 10 единиц в секунду. То есть грубо говоря через 10 секунд он добежит до цели.
НО во время того как он бежит как узнать его координату в ДАННЫЙ МОМЕНТ ВРЕМЕНИ... (вы не так меня поняли...)

пробежал он секунду

S = 10*1

или вы знаете время старта t0 и текущее t1

S = (t1-t0) * 10
Ответ
#5
ага, а как сделать проекцию на координаты то есть найти (Xнастоящее, Yнастоящее), пусть даже я и знаю пройденное расстояние (10 едениц ) это никак не дает мне возможности узнать его координату.
Ответ
#6
krisadr Написал:ага, а как сделать проекцию на координаты то есть найти (Xнастоящее, Yнастоящее), пусть даже я и знаю пройденное расстояние (10 едениц ) это никак не дает мне возможности узнать его координату.

вы знаете координаты старта x0, вы знаете расстояние которое он прошел
как узнать текущие координаты x1
distance = x1 - x0
Ответ
#7
это вычисление по только но прямой, но у меня координатная плоскость ... либо я уже туплю совсем.

Добавлено через 7 минут
эхх, зря я прогуливал вышку Big Grin
Ответ
#8
Теорема Пифагора учили?
Она у вас в программе, есть
Цитата:В прямоугольном треугольнике квадрат длины гипотенузы равен сумме квадратов длин катетов.

Добавлено через 4 минуты
[Изображение: 7cf2ccaf3fea69e383e05fd43ba76aa5.png]
Ответ
#9
разумеется я ей и пользуюсь, блин щас не поленюсь и залезу в паинт, нарисую все наглядно где что не сходиться. дело в том, что теперь мы знаем гиппотенузу. а оба катета нам неизвестны.
гипотенуза равна допустим 2 (гипотенуза это distance,либо пройденное расстояние на второй секунде при скорости 1, X и Y у нас катеты).
получаеться 2*2 = x*x+y*y => 4 = x*x + y*y .
что мы имеем... уравнение с ДВУМЯ неизвестными... значит данным способом решить невозможно.
[Изображение: hlPl0c4X59Q.jpg]

Добавлено через 5 минут
я надеюсь хоть на этом наглядном примере вы поняли мою проблему...
Ответ
#10
Разделяете скорость Вашего персонажа на X и Y компонент.

Тогда местоположение будет: (Vx * time; Vy * time)
НЛО прилетело и оставило подпись здесь.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Java координаты, различия PTS и Java, какие сборки хороши (iL) varted 5 2,481 09-12-2018, 08:29 AM
Последний пост: varted
  Расчет координат в момент передвижения. Alay 7 2,995 01-31-2017, 06:56 PM
Последний пост: Gawric
  Непонятный момент с 7-ю печатями Sber 2 1,733 12-13-2016, 01:25 PM
Последний пост: Emperor
  Не правильные координаты респа персонажа zaq1993 4 1,679 11-14-2015, 07:25 AM
Последний пост: n3k0nation
  Координаты телепортации к РБ.L2j-pride Allene 7 2,624 08-31-2015, 10:53 AM
Последний пост: Allene
  координаты из двумерного массива slayer48 4 1,704 08-01-2015, 05:58 PM
Последний пост: KID
  Доброго времени суток (Команда + реализация) Creat1v 0 1,020 01-11-2015, 11:22 AM
Последний пост: Creat1v
  Сделать что-либо в момент логина mego4el 1 1,258 07-10-2013, 03:01 PM
Последний пост: n3k0nation
  Спаун НПЦ через Х времени после запуска сервера mego4el 11 2,854 06-22-2013, 11:41 PM
Последний пост: KilRoy
  Подвисание сервера в момент бекапа DomiNo 4 2,032 04-22-2013, 02:42 PM
Последний пост: DomiNo

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)