51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
1

Полёт объекта

15.04.2016, 18:56. Показов 1484. Ответов 6
Метки нет (Все метки)

Всем здрасьте.
Проблема в задаче, не могу сообразить как решить ... Это больше вопрос не по ЯП, но я не знаю куда можно было ещё обратиться ...

Задача:
Объект(например, мяч подкинутый вертикально вверх) летит наверх до опр. точки и потом так же летит вниз и приземляется на точку, с которой прыгал. Перемещение объекта НЕ должно быть линейным(ну как в реальной жизни)

Проблема:
Эту задачу нужно решить при разных FPS(кадров в секунду)
Например, для 60(обычно) и для 2000(вообще не обычно).

Пока имеется: координата Y у объекта, дельта времени между кадрами.
Нужно перемещать каждый кадр этот объект по Y координате, чтобы пролетал одинаковое расстояние как за 60, так и за 2000 FPS.

У меня есть решение для задачи, где идёт "Человек" по Х координате, тут всё просто, т.к. движение линейное:
C++
1
2
3
4
5
6
const float Distance = 500.0;// Сколько должен пройти за секунду
//...
dt = ... // берём дельту времени между кадрами
//...
dx = Distance * dt;// Умножаем наше расстояние на дельту времени, получаем нужное смещение в 1 кадр.
x += dx;
Может вам чем-то поможет этот пример для решения поставленной задачи....

Заранее спасибо !
Можете даже кинуть предложения какие-нибудь по поводу решения, я сам додумаю с:
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2016, 18:56
Ответы с готовыми решениями:

Изобразить полет самолета
написать прогу имитирующую полет самолета по прямой траектории. нажатием кнопки вверх и вниз должен...

Решение физической задачи: рассчитать полет камня, брошенного под углом к горизонту
День добрый! Есть проблемка изучаю c++ первый день, прошу помощи по данной задаче. Вот ее...

Требуется ли при удалении объекта посредством delete указывать тип объекта?
например, есть указателиvoid *p1; void *p2; есть VCL-объект TButton, есть самописный класс...

Как правильно вызывать функцию объекта из другой функции того же объекта?
Доброго дня и ночи, уважаемые программисты! Существует некоторая проблема, на которую я наткнулся,...

6
Эксперт С++
8719 / 4262 / 950
Регистрация: 15.11.2014
Сообщений: 9,669
15.04.2016, 18:58 2
Цитата Сообщение от BeginerMan Посмотреть сообщение
Можете даже кинуть предложения какие-нибудь по поводу решения
Ламот программирование игр для windows
0
2055 / 1533 / 166
Регистрация: 14.12.2014
Сообщений: 13,345
15.04.2016, 19:27 3
Лучший ответ Сообщение было отмечено BeginerMan как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class TMaterialDot{
public:
T3DVector Position;
T3DVector Speed;
T3DVector Acceleration;
float Mass;
TForces Forces;
...
void UpdatePosition(float Time){
   T3DVector Force=Forces.CalculateEqualForce(); 
   Acceleration=-Force/Mass;
   Speed+=Acceleration*Time;  
   Position+=Speed*Time;
}
}
Ну в общем костяк первого порядка точности . Вычисление равнодействующей приложенных сил тоже тривиально. Ну а сами силы уже от твоей задачи зависят.
1
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
16.04.2016, 20:38  [ТС] 4
Fulcrum_013, спасибо, замечательно работает. Только появилась новая проблема, но она связанна с другой вещью ...
при ~2к FPS, получается настолько маленькое число, что точности float не хватает, а double использовать не могу с:
Но это уже мои проблемы, решение работает, ещё раз спасибо !
0
Модератор
3348 / 2124 / 348
Регистрация: 13.01.2012
Сообщений: 8,282
16.04.2016, 20:59 5
Откройте тайну где вы получаете 2к фпс?
0
2055 / 1533 / 166
Регистрация: 14.12.2014
Сообщений: 13,345
16.04.2016, 21:00 6
Цитата Сообщение от BeginerMan Посмотреть сообщение
получается настолько маленькое число, что точности float не хватает
Время пользуй в секундах. тогда при 2000FPS шаг по времени примерно 0,0005. даже при скорости 1 м/с получается все довольно неплохо. А при втором порядке точности там квадраты времени в формуле. флоат точно не потянет.
0
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
17.04.2016, 09:42  [ТС] 7
vxg, Directx, обычная прорисовка "2D" объектов, без Vsync. Ну конечно не ровно 2к, а ~1700
И вообще, не мне такое надо, задание дали - значит надо сделать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2016, 09:42
Помогаю со студенческими работами здесь

Свойство объекта в виде массива char заполняется только для одного объекта
Есть два свойства: одно - string, второе - массив char. Если начать заполнять их двум и более...

При возврате объекта из функции пишет, что для объекта не определен констуктор копирования
Пишу шаблонный класс матриц. Делаю, значит, переопределение оператора + для двух матриц одного...

Вывод данных вложенного объекта из другого объекта
Добрый День! Хочу в одном объекте вывести текст который находится во вложенном объекте. Помогите...

Создание объекта в функции и возврат объекта из нее
Не могу разобраться с ссылками. Возможно ли вернуть из функции объект созданный в стеке при этом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru