Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Падающий мяч 
:(
    Опции темы
Rickert
Дата 1.6.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Mazzi, ключевая фраза
Цитата(sSilence @  27.5.2009,  20:02 Найти цитируемый пост)
Подскажите как сделать мяч который падает с определенной высоты, по законам гравитации и отскакивает.




--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Bitter
Дата 1.6.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Rickert, вот вы спорите о том, сколько должно быть кадров в секунду, а мой алгоритм не зависит от этого. Мяч будет одинаково выглядеть хоть при частоте 100 fps хоть при частоте 10 fps. Именно для этого я считаю количество тактов пройденных с момента последнего рендера, после чего на основе этой цифры изменяется ускорение. В этом случае не нужно даже думать сколько кадров выбирать. Это называется не зависеть от системы. А звуковая  и графическая карта тут вообще не причем, так как в расчетах скорости участия не принимают и работают паралельно.

Добавлено через 2 минуты и 40 секунд
Цитата(Rickert @  31.5.2009,  05:28 Найти цитируемый пост)
Нужно искать разницу между кадрами


Блин, а я что делаю? 
вот этот кусок кода не о чем не говорит?

Код

    QueryPerfomanceCounter(t1);                                                  
    deltaT = (t1 - t2) / f;                                                                      // РАЗНИЦА ВРЕМЕНИ МЕЖДУ КАДРАМИ
    if (deltaT>0.1)  // Скорость работы не быстрее  0.1 секунды     // это ограничение для того, чтобы избежать deltaT=0
   { 
      QueryPerfomanceCounter(t2);


Добавлено через 4 минуты и 54 секунды
Цитата(ksnk @  31.5.2009,  15:55 Найти цитируемый пост)
 Зачем пересчитывать чаще и тратить такты процессора, которые можно потратить на что-то нужное...

Вот именно - незачем, по этому и считается количество потраченных процессором тактов на другие расчеты, для того, чтобы сохранять неприрывность движения графики

PM MAIL ICQ Skype   Вверх
Rickert
Дата 1.6.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Bitter, ну считайте - считайте, пока на грабли не наступите - не поймёте.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Bitter
Дата 1.6.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Rickert, ну объяснили бы сразу в чем грабли-то, а то получается как "я такой классный знаю, а вот вам не скажу бугага"
PM MAIL ICQ Skype   Вверх
Dobermann
Дата 1.6.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Я по моему тут все по физике... сила трения, притяжения, вектор падения и т.п. и формулы оттуда же брать надо...
PM   Вверх
cardinal
Дата 1.6.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Bitter, помоему не так
Код

 if (Координата_шарика_Y>0)   Координата_шарика_Y + = Speed;

а так
Код

 if (Координата_шарика_Y>0)   Координата_шарика_Y + = Speed * deltaT;

должно быть...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Bitter
Дата 1.6.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



cardinal, ну я просто до этого написал: 

Код

 Speed += g*deltaT;


то есть дельту уже учел.
PM MAIL ICQ Skype   Вверх
cardinal
Дата 1.6.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Bitter, в случае, что g = const

integral a dt = v
integral v dt = s

соответственно перемножать нужно два раза...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Rickert
Дата 1.6.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Цитата(Bitter @  1.6.2009,  18:11 Найти цитируемый пост)
Rickert, ну объяснили бы сразу в чем грабли-то, а то получается как "я такой классный знаю, а вот вам не скажу бугага" 

Вы разработками в области параллельных вычислений занимались? Вот у вас есть два потока, которые считают два значения и складывают их в область памяти. Каждый работает независимо от другого разное количество секунд. И есть третий поток, который должен сложить результаты работы первых двух. Вопрос: как организовать работу? Как узнать что первые два потока завершили свои вычисления и в обусловленных областях памяти лежат конечные значения?
Когда вы считаете такты ЦП - вы следите за выполнением только одного потока, забывая, что есть ещё поток GPU и остальные вычисления, которые в конечном итоге, дают результирующую картинку. Т.е. чтобы верно отсчитывать время вы должны отталкиваться от реально отображённых кадров, а не от тактов ЦП.
Конечно, возможно что при небольшой нагрузке вы можете учитывать только такты ЦП и иметь на руках достоверную картинку. Но стоит вашему проекту вырасти до шейдеров и большого количества объёма данных - как начнутся непонятные артефакты в просчёте физики, на отлов которых у вас, скорее всего, уйдёт очень много времени.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
arilou
Дата 1.6.2009, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Rickert, кстати, а где тут проблема? Bitter считает дельту с последнего рассчета и учитывает ее. Всё равно у тебя один поток для всего получается, а там где драйвер скидывает command buffer в видео карту, основной поток будет ждать. Т.е. нет смысла заморачиваться на параллелизм в данном случае. Это как из пушки по воробьям.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
sSilence
Дата 5.6.2009, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



зачем мне считать такты, кадры! у меня тут идет просто вычиления значения по оси "y"!
программа готова в ней отображается щарик(мячик), только осталось в бить что делать с координатой и все.
и на данный момент как я писал в пред посте, он просто опускается с ускорением
PM MAIL   Вверх
Bitter
Дата 7.6.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



sSilence, либо Вы задете вопрос не относящийся к теме данного раздела, либо Вы не поняли, что Вам отвечают.

Если Вам надо объяснить как работают циклы в С++, то Вам явно не сюда, но если вам нужна физика перемещения падающего упругого объекта, то внимательно еще раз прочитайте ответы, в них всё уже указано.

Цитата(sSilence @  5.6.2009,  18:06 Найти цитируемый пост)
осталось в бить что делать с координатой

именно это вам и объяснили

Цитата(sSilence @  5.6.2009,  18:06 Найти цитируемый пост)
он просто опускается с ускорением

ускорение существует только в реальном физическом мире. В рамках же программы, оно описывается некоторым уравнением, вычисление которого жестко привязано к характеристикам компьютера. Так вот, чтобы абстрагироваться от конкретной модели процессора, и производят подсчет времени, прошедшего с момента последнего вычисления.
PM MAIL ICQ Skype   Вверх
cardinal
Дата 7.6.2009, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Rickert
Дата 7.6.2009, 06:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



arilou, с пушки попадёшь с большей вероятностью, а точность в физ. расчётах - наше фсё.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
galileopro
  Дата 5.7.2009, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

Репутация: нет
Всего: нет



Ну если 20 мало, то думаю 30 будет вполне достаточно. А больше для падающего шарика не нужно, скорее всего...
PM MAIL WWW ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.