Вычисление координаты движущегося объекта в момент времени. - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 25.11.2012, 22:35   #1
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Вычисление координаты движущегося объекта в момент времени.

Решил чисто для себя написать программку, в которой персонаж перемещается в координатной плоскости (в дальнейшем вставлю логику в свой сервер который пишу с 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 = КАК ВЫЧИСЛИТЬ??? //координата по X в данный момент времени
			currentLocY = КАК ВЫЧИСЛИТЬ??? //координата по Y в данный момент времени
			System.out.println("Персонаж прошел 1 секунду. И его координаты : X = " + currentLocX + " Y = " + currentLocY);
		}
		System.out.println("Персонаж дошел до конечной точки.");
	}
Копался в исходниках лыжи но с ихними методиками так и не разобрался,
да к тому же хотелось бы самому дойти до решения а не тупо копипастить.

Да и еще вопрос, как какой промежуток времени поставить в прозвон,
да так чтобы не перегружать процессор но и не терять качества. И стоит ли вообще использовать sleep, быть может есть вариант получше? знания java есть, но мало практики в написании собственных программ, вот и решил исправлять этот пробел
krisadr вне форума Ответить с цитированием
Непрочитано 25.11.2012, 22:40   #2
Аватар для Gattsu
Пользователь

По умолчанию Re: Вычисление координаты движущегося объекта в момент времени.

distance = time * speed
тут уже школа

Откровенно говоря...
Вы представьте этот алгоритм в игре. где бы оказался Марио через 10 лет
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 25.11.2012, 22:46   #3
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Вычисление координаты движущегося объекта в момент времени.

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

По умолчанию Re: Вычисление координаты движущегося объекта в момент времени.

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

S = 10*1

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

S = (t1-t0) * 10
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 25.11.2012, 22:51   #5
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Вычисление координаты движущегося объекта в момент времени.

ага, а как сделать проекцию на координаты то есть найти (Xнастоящее, Yнастоящее), пусть даже я и знаю пройденное расстояние (10 едениц ) это никак не дает мне возможности узнать его координату.
krisadr вне форума Ответить с цитированием
Непрочитано 25.11.2012, 22:53   #6
Аватар для Gattsu
Пользователь

По умолчанию Re: Вычисление координаты движущегося объекта в момент времени.

Цитата:
Сообщение от krisadr Посмотреть сообщение
ага, а как сделать проекцию на координаты то есть найти (Xнастоящее, Yнастоящее), пусть даже я и знаю пройденное расстояние (10 едениц ) это никак не дает мне возможности узнать его координату.
вы знаете координаты старта x0, вы знаете расстояние которое он прошел
как узнать текущие координаты x1
distance = x1 - x0
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 25.11.2012, 22:59   #7
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Вычисление координаты движущегося объекта в момент времени.

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

Добавлено через 7 минут
эхх, зря я прогуливал вышку

Последний раз редактировалось krisadr; 25.11.2012 в 23:06. Причина: Добавлено сообщение
krisadr вне форума Ответить с цитированием
Непрочитано 25.11.2012, 23:07   #8
Аватар для Gattsu
Пользователь

По умолчанию Re: Вычисление координаты движущегося объекта в момент времени.

Теорема Пифагора учили?
Она у вас в программе, есть
Цитата:
В прямоугольном треугольнике квадрат длины гипотенузы равен сумме квадратов длин катетов.
Добавлено через 4 минуты

Последний раз редактировалось Gattsu; 25.11.2012 в 23:11. Причина: Добавлено сообщение
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 25.11.2012, 23:31   #9
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Вычисление координаты движущегося объекта в момент времени.

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


Добавлено через 5 минут
я надеюсь хоть на этом наглядном примере вы поняли мою проблему...

Последний раз редактировалось krisadr; 25.11.2012 в 23:37. Причина: Добавлено сообщение
krisadr вне форума Ответить с цитированием
Непрочитано 25.11.2012, 23:39   #10
Пользователь

По умолчанию Re: Вычисление координаты движущегося объекта в момент времени.

Разделяете скорость Вашего персонажа на X и Y компонент.

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


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
itamename-e.dat UFODriverr Lineage II 5 28.02.2021 18:17


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 13:26. Часовой пояс GMT +3.

Вверх