Математический форум Math Help Planet
Обсуждение и решение задач по математике, физике, химии, экономике Теоретический раздел |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
новый онлайн-сервис число, сумма и дата прописью |
|
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Страница 1 из 2 |
[ Сообщений: 14 ] | На страницу 1, 2 След. |
|
Автор | Сообщение | |
---|---|---|
DurianOdour |
|
|
Решать задачи/примеры могу, но нет понимания зачем это надо, соответственно не могу использовать доступные инструменты для решения реальной задачи. Поэтому прошу вашей помощи и пояснений. Суть такая. Пишу маленькую игру. В игре есть только 1 объект - шарик.
2. Шарик двигается только вверх-вниз, изменяется только координата y. Пусть он двигается от 0 до какого-то значения = размеру экрана. 3. Шарик должен двигаться согласно настройкам которые задал пользователь. И пройти ровно столько итераций сколько задал пользователь за заданное время. Итерация шарика - это перемещение шарика от 0 до конечной точки, и от конечной точки обратно до 0. Пользователь ввел время игры 40 секунд, а количество итераций 10. Соответсвенно посчитаем. Одна итерация шарика должна быть по времени четко 40/10 = 4 секунды. Идея заключается в том, чтобы найти такую функцию, которая бы четко по текущему времени игры выдавала положение шарика, независимо от других факторов, таких как частота обновления экрана и т.д. Параметры и объекты:
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), но двигаясь вверх. То есть хотелось бы так, чтобы в функцию передавалось текущее игровое время и по нему можно было четко определить положение шарика на игровом поле, в независимости от времени на отрисовку и вычисление логики. Можно конечно тупо подобрать делением, умножение, делением с остатком и т.д, Но я думаю что это можно как-то красивее сделать, учитывая, то что шарик двигается по одной и той же траектории циклически. Подскажите пожалуйста, как эту задачку можно решить, чтобы красиво и рационально получилось. Буду благодарен за любую помощь и подсказки. |
||
Вернуться к началу | ||
sergebsl |
|
|
в языках программирования должны быть функции счётчиков времени в миллисекундах. Они могут вам помочь.
Если шарик движется циклически, то оцените с помощью встроенных счётчиков времени, время, затрачиваемое на один период. |
||
Вернуться к началу | ||
DurianOdour |
|
|
Дело в том что мне нельзя оценивать время. Мне нужна именно формула, которая независимо от счетчиков, кадров в секунду, будет четко определять местоположение шарика в текущий момент времени ( время игры, например 3, 200,3232, 4200 миллисекунд)
В том то и проблема. что я хотел бы как-то это красиво сделать через функцию, чтобы грубо говоря отсылалаем время с начала игры, а назад приходит позиция шарика в данный момент времени. Очень много преимуществ в таком случае, независим от производительности устройства, можно в любой момент определить местоположение, паузы делать. Тот метод который Вы предлагаете, имеет главный недостаток зависимость от ФПС (кадр в секунду) + нам нужно сделать пробный этап моделирования чтобы получить время моделирования одной итерации цикла (именно игрового цикла, а не шарика). Например мы получили, что нам на отрисовку и вычисления логики игры нужно 30мс = 1 итерация в цикле. Мы возьмем и легко посчитаем количество циклов для полного прохождения пути, но представьте, что ФПС просядет во время игры или наоборот, то мы получим что попало в таком случае. Поэтому и на математический форум обратился, так как это скорее всего можно решить с помощью математики, например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать. Подскажите идеи или примерное решение. Спасибо |
||
Вернуться к началу | ||
Andy |
|
|
DurianOdour
DurianOdour писал(а): например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать Почему не получилось реализовать? |
||
Вернуться к началу | ||
За это сообщение пользователю Andy "Спасибо" сказали: DurianOdour |
||
DurianOdour |
|
|
Andy писал(а): DurianOdour DurianOdour писал(а): например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать Почему не получилось реализовать? Не могу правильно параметры подобрать. Можете пожалуйста помочь сделать это или может как-то по-другому можно. |
||
Вернуться к началу | ||
Andy |
|
|
DurianOdour
DurianOdour писал(а): Не могу правильно параметры подобрать. Можете пожалуйста помочь сделать это или может как-то по-другому можно. Можно сделать по-разному. Это коммерческий проект? |
||
Вернуться к началу | ||
За это сообщение пользователю Andy "Спасибо" сказали: DurianOdour |
||
sergebsl |
|
|
DurianOdour писал(а): Дело в том что мне нельзя оценивать время. Мне нужна именно формула, которая независимо от счетчиков, кадров в секунду, будет четко определять местоположение шарика в текущий момент времени ( время игры, например 3, 200,3232, 4200 миллисекунд) В том то и проблема. что я хотел бы как-то это красиво сделать через функцию, чтобы грубо говоря отсылалаем время с начала игры, а назад приходит позиция шарика в данный момент времени. Очень много преимуществ в таком случае, независим от производительности устройства, можно в любой момент определить местоположение, паузы делать. Тот метод который Вы предлагаете, имеет главный недостаток зависимость от ФПС (кадр в секунду) + нам нужно сделать пробный этап моделирования чтобы получить время моделирования одной итерации цикла (именно игрового цикла, а не шарика). Например мы получили, что нам на отрисовку и вычисления логики игры нужно 30мс = 1 итерация в цикле. Мы возьмем и легко посчитаем количество циклов для полного прохождения пути, но представьте, что ФПС просядет во время игры или наоборот, то мы получим что попало в таком случае. Поэтому и на математический форум обратился, так как это скорее всего можно решить с помощью математики, например предложение было использовать косинус в пределах от 0 до 1 и умножать на расстояние, но не получилось реализовать. Подскажите идеи или примерное решение. Спасибо Точную функцию типа балистической кривой летящего ядра или снаряда вы не получите. Это дискретная функция. |
||
Вернуться к началу | ||
За это сообщение пользователю sergebsl "Спасибо" сказали: DurianOdour |
||
DurianOdour |
|
|
Andy писал(а): DurianOdour DurianOdour писал(а): Не могу правильно параметры подобрать. Можете пожалуйста помочь сделать это или может как-то по-другому можно. Можно сделать по-разному. Это коммерческий проект? Это некоммерческий проект, это чисто для себя, игра проще некуда, просто хочу сделать правильно. Самое простое решение в данном случае, просто поставить параллельно таймер который будет четко по времени к примеру раз в 30мс срабатывать и инкрементировать положение шарика на определенное значение, то есть работу со временем делегируем системе, но этот подход имеет очень много проблем + так называемый "костыль" . Есть еще способы как реализовать это, но все они сводятся к каким-то манипуляциям дополнительным, которые только усложняют все Вот пример вывода из игры ---Logger Error---: GAME TIME 9039.0 |
||
Вернуться к началу | ||
Andy |
|
|
DurianOdour
А почему бы не попробовать для начала реализовать одномерную игру вместо двухмерной? Это и проще и познавательно. Потом можно будет перейти к двухмерной игре. |
||
Вернуться к началу | ||
sergebsl |
|
|
Вообще, в анализе алгоритмов чаще пользуются оценочными приблизительными о-функциями
Сложность алгоритма Сложность алгоритма характеризуют асимптотическим классом, к которому принадлежит его функция сложности. Например, говорят: "Сложность алгоритма А есть О(n^3)". Асимптотический класс алгоритма определяет его категорию сложности. Примеры некоторых категорий сложности алгоритмов: - алгоритмы полиномиальной сложности, F(n) = O(n^p) ; - алгоритмы экспоненциальной сложности, F(n) = O(e^n) ; - алгоритмы факториальной сложности, F(n) = O(n!) . Алгоритмы, имеющие полиномиальную функцию сложности математики называют эффективными. Примеры задач разной сложности Полиномиальная сложность: - задачи о кратчайших путях и маршрутах на графах; - задача о максимальном потоке транспортной сети; - задачи о паросочетаниях, о назначениях (двудольные графы). Экспоненциальная сложность: - задача установления изоморфности графов. NP-трудные задачи: - поиск максимальной клики и определение плотности графа; - определить, является ли заданный граф гамильтоновым; - задача коммивояжера; - задача о наибольшем общем подграфе; - задача о взломе шифра. |
||
Вернуться к началу | ||
На страницу 1, 2 След. | [ Сообщений: 14 ] |
Похожие темы | Автор | Ответы | Просмотры | Последнее сообщение |
---|---|---|---|---|
Опр-ть мат. ожидание и дисп. ошибки опр-ия положения объекта | 2 |
182 |
20 дек 2019, 13:45 |
|
Функция изменения положения Призмы в пространстве | 4 |
241 |
01 мар 2020, 19:29 |
|
Система уравнений времён БЭСМ-6
в форуме Численные методы |
10 |
498 |
30 май 2023, 20:43 |
|
Какая будет функция для определения угла
в форуме Тригонометрия |
1 |
197 |
15 сен 2021, 07:58 |
|
Исследование движения объекта
в форуме Механика |
6 |
341 |
18 май 2017, 22:44 |
|
Объем объекта (бусина)
в форуме Интегральное исчисление |
5 |
358 |
15 дек 2014, 20:54 |
|
Задача на вычисление размера удаленного объекта | 0 |
213 |
27 ноя 2021, 14:45 |
|
Рассчитать характеристики торговой фирмы, как объекта СМО | 0 |
154 |
22 дек 2022, 11:35 |
|
Положения Равновесия на сфере | 0 |
192 |
28 май 2020, 13:45 |
|
Найти положения равновесия системы
в форуме Дифференциальное исчисление |
0 |
275 |
15 июн 2015, 08:12 |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Кто сейчас на конференции |
Сейчас этот форум просматривают: YaCy [Bot] и гости: 14 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |