21 Ноя 2019 - 11:22:58
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
   Начало   Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Управление роботом. Миниконкурс.
Mikle
Юзеры

Сообщений: 148


< Михаил
Просмотр профиля E-mail
« : 03 Янв 2012 - 13:37:44 »

Пока нет очередного "большого" конкурса, предлагаю размяться на "маленьком".
Краткое описание:
Робот представляет собой три массивных колеса (изображение в 2D), соединённых невесомыми пружинами, внизу расположена земля, имеется сила тяжести, трение. Столкновения колёс между собой и с землёй абсолютно неупругие.
Радиус колеса - 32 (в пикселях), длина ненагруженных пружин - 150, земля находится на уровне -32, то есть колесо, касающееся земли, находится на уровне 0.
ЭТО ВСЁ УЖЕ НАПИСАНО! Ваша задача - написать robot.dll.
Программа, визуализирующая робота, обращается к robot.dll, которая экспортирует единственную ф-цию RTICK. Единственный параметр ф-ции - указатель на структуру, содержащую текущее значения координат и скоростей колёс, а так же усилия, приложенные к пружинам.
Задача - заставить робота двигаться вправо, цель - за минуту уйти как можно дальше.
Ф-ция RTICK вызывается 60 раз в секунду.
Тут уже готовая программа и исходник robot.dll на C++:
http://www.gamedev.ru/files/?id=74460
Можно этот исходник брать за основу. Естественно, писать dll можно на любом удобном языке.

Немного подробностей.
Единицы все условные:
Масса колеса - 1.
Время - 1 "тик", то есть примерно 1/60 сек.
Расстояние - пиксели.
Соответственно скорость - пиксели за тик.
Единица силы - та величина, при которой за 1 тик тело массой в 1 ускоряется на 1.
Ускорение св. падения - 0.1.
Трение об воздух - каждый тик скорость каждого шара умножается на 0.997.
К-т жёсткости пружины - 6/150 (по Гуку).
Сила трения покоя и движения - 3 * сила_сжатия_тел.
Можно только влиять на три пружины, сила от -3 до 3, если дать больше - программа ограничит. Отрицательная сжимает пружину, положительная разжимает. Пружина с индексом №0 соединяет колёса №0 и №1, пружина с индексом №1 соединяет колёса №1 и №2, пружина с индексом №2 соединяет колёса №2 и №0.
На GameDev.ru народ уже активно участвует, вот тема:
http://www.gamedev.ru/code/forum/?id=156656
Записан
keYMax
Юзеры

Сообщений: 682



Просмотр профиля WWW
« Ответ #1 : 04 Янв 2012 - 17:32:54 »

Вижу на gamedev'е уже бурное участие прошло.  Улыбающийся Я пас, после нового года вообще голова не варит, хочется отдохнуть почитать о том как косммические корабли бороздят просторы вселенной.
Записан
Mikle
Юзеры

Сообщений: 148


< Михаил
Просмотр профиля E-mail
« Ответ #2 : 05 Янв 2012 - 12:47:46 »

Вижу на gamedev'е уже бурное участие прошло.
Как раз начинается самое интересное - взятие неберущихся с виду рекордов.
Записан
Страниц: [1]
  Печать  
 
Перейти в: