![]() |
|
Модераторы: Rickert |
![]()
|
|
| sSilence |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
Здраствуйте.
Подскажите как сделать мяч который падает с определенной высоты, по законам гравитации и отскакивает. я не могу (понять, сделать) цикл, по которому, мяч должен падать и отпрыгивать все должно происходить по формуле at^2+yt+y(0) или еще как... подскажите, можно только цикл. Спасибо. Не откажусь и от примера) Это сообщение отредактировал(а) sSilence - 27.5.2009, 21:46 |
|||
|
||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 4 Всего: 21 |
Делай так.
Задай переменные: скорость, расстояние до земли. Исходное положение: скорость == 0, расстояние == N цикл_пока (расстояние > 0) { скорость++; расстояние--; рисуем_мяч(); } цикл_пока (скорость > 0) { скорость--; расстояние++; рисуем_мяч(); } Примитивно, но для иллюстрации сгодится. -------------------- Мне нужны помощники. |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
Нет, не сгодится.
На разных машинах это будет работать по разному. Вот праильная схема: 1. понадобятся три 64 битные переменные (t1, t2, f) 2. При старте Вызываем API QueryPerfomanceCounter(t2); // Количество тиков на данный момент времени 3. При старте Вызываем API QueryPerformanceFrequency(f); // Частота процессора 3. Тело программы While (!Stop) { QueryPerfomanceCounter(t1); deltaT = (t1 - t2) / f; if (deltaT>0.1) // Скорость работы не быстрее 0.1 секунды { QueryPerfomanceCounter(t2); Speed += g*deltaT; if (Координата_шарика_Y>0) Координата_шарика_Y + = Speed; else Speed = -1; // -1 это значение с потолка, то есть 1 метр в секунду вверх } } 4. переменная g это ускорение свободного падения = 9.822 Типы всех переменных, думаю интуитивно понятны |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Люди не гоните, скорость не может задаваться постоянным значением. Она должна расчитываться исходя из разницы во времени между сменой кадра.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
Rickert, а я что написал?
|
|||
|
||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 4 Всего: 21 |
Я показал всего лишь иллюстрацию, без подробностей.
-------------------- Мне нужны помощники. |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
Что же она иллюстрирует? Что мяч должен опускаться вниз, а потом подниматься вверх что ли? Думаю автор сам понимает что значит "падает" и "отскакиваает"
|
|||
|
||||
| sSilence |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
госпада.
все еще проще чем кажется,
|
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
это вобще не понятно что цифры какие-то от балды... лажа. Попробуй запусти на машине в 233 Мг и на машине с 4мя ядрами...
это называется проще? Я тебе реальное решение показал. Ну как знаешь... Это сообщение отредактировал(а) Bitter - 30.5.2009, 22:57 |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Bitter, вы учитываете такты ЦП. Но ведь для получения кадра используется ещё процессор звуковой карты и видео. Нужно искать разницу между кадрами - тогда будет нужный эффект. Ищем её в секундах, используем физическую формулу для расчёта, и умножаем на полученную разницу - она играет роль шага во времени (dt).
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 2 Всего: 386 |
Rickert, Хм... А зачем считать какие-то такты ЦП? Картинка должна изменяться не менее чем 20 раз в секунду. Вот они "такты" и есть! Ставить delay/slip/timeout по вкусу, пусть процессор сам считает свои такты...
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Вот и я спрашиваю: зачем Bitter их считает?
Почему именно 20? Почему не 33? Не 1567? Это сообщение отредактировал(а) Rickert - 31.5.2009, 15:46 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 2 Всего: 386 |
Rickert, В кино, к примеру, частота кадров - 24 кадра в секунду. Вполне реалистичная картинка получается. Зачем пересчитывать чаще и тратить такты процессора, которые можно потратить на что-то нужное...
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
ksnk, т.е. то ваши личные убеждения? Ну давайте, попробуйте поиграть в кваку с fps = 20 кадров.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 4 Всего: 21 |
топикстартер написал "я не могу (понять, сделать) цикл, по которому, мяч должен падать и отпрыгивать" вот это и иллюстрирует. Читайте внимательней пожалуйста. -------------------- Мне нужны помощники. |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |