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

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

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 28 окт 2017, 22:01 
Не в сети
Начинающий
Зарегистрирован:
28 окт 2017, 21: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, 22:24 
Не в сети
Light & Truth
Зарегистрирован:
10 дек 2013, 02:33
Сообщений: 3268
Cпасибо сказано: 263
Спасибо получено:
417 раз в 407 сообщениях
Очков репутации: 51

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

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

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

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

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

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

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

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

Спасибо

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 00:02 
Не в сети
Любитель математики
Аватара пользователя
Зарегистрирован:
16 июл 2011, 08:33
Сообщений: 22268
Откуда: Беларусь, Минск
Cпасибо сказано: 2096
Спасибо получено:
4958 раз в 4631 сообщениях
Очков репутации: 845

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

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

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

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

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


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

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 09:42 
Не в сети
Любитель математики
Аватара пользователя
Зарегистрирован:
16 июл 2011, 08:33
Сообщений: 22268
Откуда: Беларусь, Минск
Cпасибо сказано: 2096
Спасибо получено:
4958 раз в 4631 сообщениях
Очков репутации: 845

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

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

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Andy "Спасибо" сказали:
DurianOdour
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 11:17 
Не в сети
Light & Truth
Зарегистрирован:
10 дек 2013, 02:33
Сообщений: 3268
Cпасибо сказано: 263
Спасибо получено:
417 раз в 407 сообщениях
Очков репутации: 51

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

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

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

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

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

Спасибо


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

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю sergebsl "Спасибо" сказали:
DurianOdour
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 11:27 
Не в сети
Начинающий
Зарегистрирован:
28 окт 2017, 21: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, 11:37 
Не в сети
Любитель математики
Аватара пользователя
Зарегистрирован:
16 июл 2011, 08:33
Сообщений: 22268
Откуда: Беларусь, Минск
Cпасибо сказано: 2096
Спасибо получено:
4958 раз в 4631 сообщениях
Очков репутации: 845

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

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Функция для определения положения объекта по игровому времен
СообщениеДобавлено: 29 окт 2017, 11:42 
Не в сети
Light & Truth
Зарегистрирован:
10 дек 2013, 02:33
Сообщений: 3268
Cпасибо сказано: 263
Спасибо получено:
417 раз в 407 сообщениях
Очков репутации: 51

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Опр-ть мат. ожидание и дисп. ошибки опр-ия положения объекта

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

Knyazhe

2

182

20 дек 2019, 13:45

Функция изменения положения Призмы в пространстве

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

Vektor

4

241

01 мар 2020, 19:29

Система уравнений времён БЭСМ-6

в форуме Численные методы

one man

10

498

30 май 2023, 20:43

Какая будет функция для определения угла

в форуме Тригонометрия

mztm

1

197

15 сен 2021, 07:58

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

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

riboc

6

341

18 май 2017, 22:44

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

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

stopy

5

358

15 дек 2014, 20:54

Задача на вычисление размера удаленного объекта

в форуме Интересные задачи участников форума MHP

Buratino

0

213

27 ноя 2021, 14:45

Рассчитать характеристики торговой фирмы, как объекта СМО

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

rekurs_faktor

0

154

22 дек 2022, 11:35

Положения Равновесия на сфере

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

Roloroma

0

192

28 май 2020, 13:45

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

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

lllulll

0

275

15 июн 2015, 08:12


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



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

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


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

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

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

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