Дискуссионный математический форумМатематический форум

Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 4 часа [ Летнее время ]
MathHelpPlanet.com RSS-лента Математического форума

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 28 окт 2017, 23:01 
Не в сети
Начинающий
Зарегистрирован:
28 окт 2017, 22:35
Сообщений: 6
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Добрый день,

Решать задачи/примеры могу, но нет понимания зачем это надо, соответственно не могу использовать доступные инструменты для решения реальной задачи.
Поэтому прошу вашей помощи и пояснений.

Суть такая. Пишу маленькую игру.

В игре есть только 1 объект - шарик.
    1. Пользователь может задать время игры и количество проходов шарика.
    2. Шарик двигается только вверх-вниз, изменяется только координата y. Пусть он двигается от 0 до какого-то значения = размеру экрана.
    3. Шарик должен двигаться согласно настройкам которые задал пользователь. И пройти ровно столько итераций сколько задал пользователь за заданное время.
Пример.
Итерация шарика - это перемещение шарика от 0 до конечной точки, и от конечной точки обратно до 0.
Пользователь ввел время игры 40 секунд, а количество итераций 10.
Соответсвенно посчитаем.

Одна итерация шарика должна быть по времени четко 40/10 = 4 секунды.

Идея заключается в том, чтобы найти такую функцию, которая бы четко по текущему времени игры выдавала положение шарика, независимо от других факторов, таких как частота обновления экрана и т.д.

Параметры и объекты:

    1. Ball = {x,y} - Текущее координаты шарика на игровом поле.
    2. Game time - время игры в мс, то есть сколько прошло времени с начала игры
    3. PointTop = {x,y}- начальная точка для шарика, к примеру может быть (200,0), а может быть, (200,200). Считая что ширина экрана 400 единиц.
    4. PointBottom = {x,y} - конечная точка, достигнув которой шарик должен изменить направление, также достигнув PointTop тоже должен изменить направление

К примеру время передали 1 секунду, то если начальная точка (0.0), а конечная (0,400), то шарик должен быть в точке (0, 200), двигаясь вниз, а на 3 секунде тоже в точке (0,200), но двигаясь вверх.

То есть хотелось бы так, чтобы в функцию передавалось текущее игровое время и по нему можно было четко определить положение шарика на игровом поле, в независимости от времени на отрисовку и вычисление логики.

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

Подскажите пожалуйста, как эту задачку можно решить, чтобы красиво и рационально получилось.
Буду благодарен за любую помощь и подсказки.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положение объекта по игровому времен
СообщениеДобавлено: 28 окт 2017, 23:24 
Не в сети
Beautiful Mind
Зарегистрирован:
10 дек 2013, 03:33
Сообщений: 1618
Cпасибо сказано: 97
Спасибо получено:
211 раз в 205 сообщениях
Очков репутации: 27

Добавить очки репутацииУменьшить очки репутации
в языках программирования должны быть функции счётчиков времени в миллисекундах. Они могут вам помочь.

Если шарик движется циклически, то оцените с помощью встроенных счётчиков времени, время, затрачиваемое на один период.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 00:51 
Не в сети
Начинающий
Зарегистрирован:
28 окт 2017, 22:35
Сообщений: 6
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Дело в том что мне нельзя оценивать время. Мне нужна именно формула, которая независимо от счетчиков, кадров в секунду, будет четко определять местоположение шарика в текущий момент времени ( время игры, например 3, 200,3232, 4200 миллисекунд)
В том то и проблема. что я хотел бы как-то это красиво сделать через функцию, чтобы грубо говоря отсылалаем время с начала игры, а назад приходит позиция шарика в данный момент времени.

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

Тот метод который Вы предлагаете, имеет главный недостаток зависимость от ФПС (кадр в секунду) + нам нужно сделать пробный этап моделирования чтобы получить время моделирования одной итерации цикла (именно игрового цикла, а не шарика). Например мы получили, что нам на отрисовку и вычисления логики игры нужно 30мс = 1 итерация в цикле. Мы возьмем и легко посчитаем количество циклов для полного прохождения пути, но представьте, что ФПС просядет во время игры или наоборот, то мы получим что попало в таком случае.

Поэтому и на математический форум обратился, так как это скорее всего можно решить с помощью математики, например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать.

Подскажите идеи или примерное решение.

Спасибо

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 01:02 
Не в сети
Light & Truth
Аватара пользователя
Зарегистрирован:
16 июл 2011, 09:33
Сообщений: 15084
Откуда: Беларусь, Минск
Cпасибо сказано: 946
Спасибо получено:
3318 раз в 3066 сообщениях
Очков репутации: 642

Добавить очки репутацииУменьшить очки репутации
DurianOdour
DurianOdour писал(а):
например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать

Почему не получилось реализовать?

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Andy "Спасибо" сказали:
DurianOdour
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 10:37 
Не в сети
Начинающий
Зарегистрирован:
28 окт 2017, 22:35
Сообщений: 6
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Andy писал(а):
DurianOdour
DurianOdour писал(а):
например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать

Почему не получилось реализовать?


Не могу правильно параметры подобрать. Можете пожалуйста помочь сделать это или может как-то по-другому можно.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 10:42 
Не в сети
Light & Truth
Аватара пользователя
Зарегистрирован:
16 июл 2011, 09:33
Сообщений: 15084
Откуда: Беларусь, Минск
Cпасибо сказано: 946
Спасибо получено:
3318 раз в 3066 сообщениях
Очков репутации: 642

Добавить очки репутацииУменьшить очки репутации
DurianOdour
DurianOdour писал(а):
Не могу правильно параметры подобрать. Можете пожалуйста помочь сделать это или может как-то по-другому можно.

Можно сделать по-разному. Это коммерческий проект?

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Andy "Спасибо" сказали:
DurianOdour
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 12:17 
Не в сети
Beautiful Mind
Зарегистрирован:
10 дек 2013, 03:33
Сообщений: 1618
Cпасибо сказано: 97
Спасибо получено:
211 раз в 205 сообщениях
Очков репутации: 27

Добавить очки репутацииУменьшить очки репутации
DurianOdour писал(а):
Дело в том что мне нельзя оценивать время. Мне нужна именно формула, которая независимо от счетчиков, кадров в секунду, будет четко определять местоположение шарика в текущий момент времени ( время игры, например 3, 200,3232, 4200 миллисекунд)
В том то и проблема. что я хотел бы как-то это красиво сделать через функцию, чтобы грубо говоря отсылалаем время с начала игры, а назад приходит позиция шарика в данный момент времени.

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

Тот метод который Вы предлагаете, имеет главный недостаток зависимость от ФПС (кадр в секунду) + нам нужно сделать пробный этап моделирования чтобы получить время моделирования одной итерации цикла (именно игрового цикла, а не шарика). Например мы получили, что нам на отрисовку и вычисления логики игры нужно 30мс = 1 итерация в цикле. Мы возьмем и легко посчитаем количество циклов для полного прохождения пути, но представьте, что ФПС просядет во время игры или наоборот, то мы получим что попало в таком случае.

Поэтому и на математический форум обратился, так как это скорее всего можно решить с помощью математики, например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать.

Подскажите идеи или примерное решение.

Спасибо


Точную функцию типа балистической кривой летящего ядра или снаряда вы не получите. Это дискретная функция.

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю sergebsl "Спасибо" сказали:
DurianOdour
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 12:27 
Не в сети
Начинающий
Зарегистрирован:
28 окт 2017, 22:35
Сообщений: 6
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Andy писал(а):
DurianOdour
DurianOdour писал(а):
Не могу правильно параметры подобрать. Можете пожалуйста помочь сделать это или может как-то по-другому можно.

Можно сделать по-разному. Это коммерческий проект?


Это некоммерческий проект, это чисто для себя, игра проще некуда, просто хочу сделать правильно.

Самое простое решение в данном случае, просто поставить параллельно таймер который будет четко по времени к примеру раз в 30мс срабатывать и инкрементировать положение шарика на определенное значение, то есть работу со временем делегируем системе, но этот подход имеет очень много проблем + так называемый "костыль" .
Есть еще способы как реализовать это, но все они сводятся к каким-то манипуляциям дополнительным, которые только усложняют все

Вот пример вывода из игры

---Logger Error---: GAME TIME 9039.0
---Logger Error---: TIME ELAPSED 0.0
---Logger Error---: GAME SCREEN HEIGHT 500.0
---Logger Error---: GAME TIME 9039.0
---Logger Error---: TIME ELAPSED 0.0
---Logger Error---: GAME SCREEN HEIGHT 500.0
---Logger Error---: GAME TIME 9039.0
---Logger Error---: TIME ELAPSED 0.0
---Logger Error---: GAME SCREEN HEIGHT 500.0
---Logger Error---: GAME TIME 9039.0
---Logger Error---: TIME ELAPSED 3.0
---Logger Error---: GAME SCREEN HEIGHT 500.0
---Logger Error---: GAME TIME 9042.0
---Logger Error---: TIME ELAPSED 13.0
---Logger Error---: GAME SCREEN HEIGHT 500.0
---Logger Error---: GAME TIME 9055.0
---Logger Error---: TIME ELAPSED 0.0
---Logger Error---: GAME SCREEN HEIGHT 500.0
---Logger Error---: GAME TIME 9055.0

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 12:37 
Не в сети
Light & Truth
Аватара пользователя
Зарегистрирован:
16 июл 2011, 09:33
Сообщений: 15084
Откуда: Беларусь, Минск
Cпасибо сказано: 946
Спасибо получено:
3318 раз в 3066 сообщениях
Очков репутации: 642

Добавить очки репутацииУменьшить очки репутации
DurianOdour
А почему бы не попробовать для начала реализовать одномерную игру вместо двухмерной? Это и проще и познавательно. Потом можно будет перейти к двухмерной игре.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 12:42 
Не в сети
Beautiful Mind
Зарегистрирован:
10 дек 2013, 03:33
Сообщений: 1618
Cпасибо сказано: 97
Спасибо получено:
211 раз в 205 сообщениях
Очков репутации: 27

Добавить очки репутацииУменьшить очки репутации
Вообще, в анализе алгоритмов чаще пользуются оценочными приблизительными о-функциями

Сложность алгоритма

Сложность алгоритма характеризуют асимптотическим классом, к которому принадлежит его функция сложности. Например, говорят: "Сложность алгоритма А есть О(n^3)". Асимптотический класс алгоритма определяет его категорию сложности. Примеры некоторых категорий сложности алгоритмов:

- алгоритмы полиномиальной сложности, F(n) = O(n^p) ;

- алгоритмы экспоненциальной сложности, F(n) = O(e^n) ;

- алгоритмы факториальной сложности, F(n) = O(n!) .

Алгоритмы, имеющие полиномиальную функцию сложности математики называют эффективными.

Примеры задач разной сложности

Полиномиальная сложность:

- задачи о кратчайших путях и маршрутах на графах;

- задача о максимальном потоке транспортной сети;

- задачи о паросочетаниях, о назначениях (двудольные графы).

Экспоненциальная сложность:

- задача установления изоморфности графов.

NP-трудные задачи:

- поиск максимальной клики и определение плотности графа;

- определить, является ли заданный граф гамильтоновым;

- задача коммивояжера;

- задача о наибольшем общем подграфе;

- задача о взломе шифра.

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
ФУнкция с симметричной областью определения

в форуме Пределы числовых последовательностей и функций, Исследования функций

Andy

3

426

10 июн 2013, 22:41

Убедиться,что функция непрерывна на всей области определения

в форуме Пределы числовых последовательностей и функций, Исследования функций

Drosya12

4

219

26 окт 2013, 19:59

ОПределить тип положения равновесия

в форуме Дифференциальные и Интегральные уравнения

vernika17

0

201

18 дек 2012, 09:31

Найти положения равновесия системы

в форуме Дифференциальное исчисление

lllulll

0

112

15 июн 2015, 09:12

Оптимизация угадывания положения фигур

в форуме Исследование операций и Задачи оптимизации

dimochka

0

215

20 сен 2013, 13:42

Исследование положения равновесия на устойчивость

в форуме Дифференциальные и Интегральные уравнения

vlad24

18

182

01 июл 2017, 17:14

Уравнение геометрического положения точек

в форуме Аналитическая геометрия и Векторная алгебра

karawella

2

134

26 дек 2015, 21:19

Как сравнить два объекта (по их признакам)?

в форуме Математическая статистика и Эконометрика

Palych

2

337

24 июн 2013, 02:00

Исследование движения объекта

в форуме Механика

riboc

6

91

18 май 2017, 23:44

Объем объекта (бусина)

в форуме Интегральное исчисление

stopy

5

193

15 дек 2014, 21:54


Часовой пояс: UTC + 4 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2016 MathHelpPlanet.com. All rights reserved