Статья опубликована в рамках: XV Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 24 декабря 2013 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Большаков С.В. МОДЕЛИРОВАНИЕ ДВИЖЕНИЯ ТРАНСПОРТНЫХ СРЕДСТВ В АВАРИЙНЫХ СИТУАЦИЯХ // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. XV междунар. студ. науч.-практ. конф. № 15. URL: http://sibac.info/archive/technic/9(12).pdf (дата обращения: 27.01.2020)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов


МОДЕЛИРОВАНИЕ  ДВИЖЕНИЯ  ТРАНСПОРТНЫХ  СРЕДСТВ  В  АВАРИЙНЫХ  СИТУАЦИЯХ


Большаков  Сергей  Витальевич


студент  2  курса  факультета  информационных  технологий  Российского  государственного  социального  университета,  РФ,  г.  Москва


E-mailnikorayne@gmail.com


Киреева  Ольга  Ильинична


научный  руководитель  канд.  физ.-мат.  наук,  доцент,  доцент  кафедры  прикладной  математики  Российского  государственного  социального  университета,  РФ,  г.  Москва

 

В  данной  работе  описывается  разработка  симулятора  дорожных  происшествих,  с  учетом  отдельных  характеристик  дорожного  транспорта,  погодных  условий  и  особенностей  трассы.

Актуальность  данного  проекта  заключается  в  моделировании  аварийных  ситуаций  при  анализе  дорожных  происшествий.  В  своем  потенциальном  будущем  симулятор  можно  будет  использовать  для  анализа  аварийности  при  проектировке  новых  дорог  [3].

На  данный  момент,  разумеется,  уже  существуют  симуляторы  дорожно-транспортных  происшествий,  однако  все  они  коммерческие,  а  к  большинству  из  них  доступ  открыт  только  для  специализированного  круга  людей.  В  пример  можно  привести  программу  Computer  Assisted  Reconstruction  of  Accidents  in  Traffic  —  от  болгарских  разработчиков.  Аварии  рассматриваются  в  3D  пространстве,  учитывается  большое  количество  условий,  а  так  же  имеет  свой  графический  редактор  для  создания  местности,  в  которой  происходит  ДТП.

Модель  столкновений  будет  упрощенная,  будут  учитываться  такие  характеристики  машин  как  вес,  тип  привода,  скорость.  Будут  учитываться  сцепление  с  дорогой  при  движении  транспортного  средства,  общее  трение  при  торможении.  Не  будут  учитываться  такие  свойства  как  аэродинамика  машины,  поперечное  трение  колес,  сопротивление  воздуха  и  др.  В  качестве  примера  берем  под  место  действа  крестообразный  перекресток.

В  качестве  среды  разработки  выбираем  программное  обеспечение  Adobe  Flash  CS  5.5  и  присутствующий  в  нем  язык  программирования  ActionScript  3.0.

Материальная  точка  является  простейшей  физической  моделью  в  механике.  За  нее  принято  понимать  обладающее  массой  тело,  размер  и  форма  которого  считаются  незначительными  при  решении  данной  задачи.  Положение,  скорость  и  масса  материальной  точке  в  каждый  момент  времени  полностью  определяют  её  поведение  и  физические  свойства.  Перемещение  —  это  вектор,  проведенный  из  начального  положения  материальной  точки  в  конечное.  Путь  —  это  длина  участка  траектории,  пройденного  материальной  точкой  за  данный  промежуток  времени.  В  отличие  от  перемещения  путь  —  это  скалярная  величина.

Материальную  точку  будем  рассматривать  как  объект  округлой  формы  с  незначительным  радиусом.  Чтобы  создать  такой  объект  в  Adobe  Flash,  нам  понадобится  выбрать  в  рабочем  окне  на  колонке  инструментов  —  инструмент  Oval  Tool.

Движение  в  ActionScript  задается  приращением  координат.  Т.  е.  задается  отдельно  переменная,  отвечающая  за  то,  сколько  пикселей  пройдет  объект  за  один  кадр  по  оси  ординат,  и  отдельно  переменная,  отвечающая  за  то,  сколько  пикселей  пройдет  объект  за  один  кадр  по  оси  абсцисс.  Напишем  функцию,  отвечающую  за  перемещение  объекта  в  кадре.  Сразу  требуется  отметить,  что  в  Adobe  Flash  немного  инвертировано  понятие  оси  у,  поэтому  если  мы  плюсуем  к  координате  у  какое  то  число,  то  объект  будет  двигаться  вниз,  а  не  вверх,  как  принято  в  математике.

Материальная  точка  движется  в  любом  направлении  с  любой  скоростью,  однако  длится  это  недолго,  ведь  ей  ничто  не  мешает  покинуть  экран  в  считанные  секунды.  Начнем  писать  код,  запрещающий  точке  покидать  пределы  экрана.  Для  этого  нам  понадобится  поставить  сверху,  снизу  и  по  бокам  прямоугольники  для  отталкивания,  т.  е.  создадим  некое  подобие  комнаты.  Поскольку  угол  отражения  равен  углу  падения,  то  зная  угол  наклона  стены  мы  можем  найти  новый  вектор,  по  которому  будет  следовать  материальная  точка.  Теперь  когда  наша  материальная  точка  замкнута  в  своем  пространстве,  можно  добавлять  дополнительные  объекты  для  столкновения.

Рассмотрим  пример  столкновения  материальной  точки  с  неподвижным  круглым  объектом,  радиус  которого  нам  известен.  Отталкивание  от  округлых  объектов  прописывать  сложнее  потому,  что  мы  не  знаем  угол  наклона  касательной  от  которой  отражается  угол  падения.  Чтобы  его  найти,  нам  потребуется  найти  угол  наклона  радиуса,  проведенного  в  точку  касания.  Вычитаем  из  координат  точки  касания  координаты  центра  круга,  чтобы  знать  как  направлен  радиус  относительно  начала  координат,  и  затем  пользуемся  функцией  atan2,  чтобы  найти  угол  наклона  радиуса.  Касательная  к  окружности  проводится  через  точку  касания  под  прямым  углом  к  радиусу  этой  окружности,  проведенному  в  точку  касания.  Таким  образом,  зная  угол  наклона  радиуса,  нам  остается  перевести  его  в  градусы,  прибавить  90,  и  перевести  обратно  в  радианы.  Следствием  этих  действий  станет  знание  угла  наклона  касательной. 

Поскольку  мы  уже  знаем  как  отражать  угол  от  прямых  (прямоугольников),  угол  наклона  которых  нам  известен,  то  дальнейшие  шаги  уже  не  будут  казаться  сложными.  Поскольку  машину  нельзя  показать  как  материальную  точку,  то  зададим  ее  как  связку  материальных  точек,  расположенных  на  углах  автомобиля.  Наглядно  это  будет  выглядить  как  прямоугольник  с  материальными  точками  в  своих  углах.

Обычно,  при  создании  системы  частиц,  каждая  частица  имеет  две  переменные  -  это  позиция  x  и  скорость  v.  Тогда  через  некоторое  время,  новая  позиция  x’  и  скорость  v’  часто  вычисляются  при  помощи  правил:

 

 

где  Dt  временной  интервал,  а  a  —  ускорение,  вычисленное  при  использовании  закона  Ньютона  f=ma  (где  f  —  общая  сила,  действующая  на  частицу).  Это  простое  объединение  Эйлера.

Введем  две  материальные  точки  (с  позициями  x1  и  x2)  и,  затем,  приказываем  им  быть  на  расстоянии  равном  100.  Выражаясь  математически,  мы  получили  следующее  двустороннее  (равное)  ограничение:

 

 

Хотя  материальные  точки  могли  быть  помещены  правильно  изначально,  после  одного  шага  интеграции  расстояние  разделения  между  ними  могло  бы  стать  недействительным.  Чтобы  получать  правильное  расстояние  еще  раз,  мы  перемещаем  частицы  путем  проецирования  их  на  набор  решений,  описанных  выше.  Это  делается  путём  выталкивания  частиц  направлено  друг  от  друга  или  путем  втягивания  их  ближе  друг  к  другу  (в  зависимости  оттого,  что  ошибочное  расстояние  меньше  или  больше). 

Фактически,  в  коде  описаны  Закон  Гука  об  упругости  и  второй  закон  Ньютона.  Закон  Гука  —  уравнение  теории  упругости,  связывающее  напряжение  и  деформацию  упругой  среды.  Сила  упругости,  возникающая  в  теле  при  его  деформации,  прямо  пропорциональна  величине  этой  деформации.  В  общем  виде  уравнение  принимает  вид:

 

Описание: F=-kx\,

 

Для  начала  нарисуем  место  действия.  Им  будем  крестообразный  перекресток,  имеющий  дорогу  с  двумя  полосами  по  горизонтали  и  проспект  с  двумя  двухполосными  дорогами,  по  вертикали.  С  помощью  инструмента  RectangleTool  рисуем  схематичный  прямоугольник.  Он  будет  играть  роль  кнопки  создания  машины  в  определенном  месте.  Во  вкладке  Properties  (свойства)  узнаем  координаты  кнопки,  запоминаем  их,  ведь  при  нажатии  на  кнопку,  объект  с  кнопкой  будет  исчезать,  и  в  её  координаты  подгрузится  объект  с  машиной.

Добавляем  в  код  следующую  строку:

car.addEventListener(MouseEvent.MOUSE_DOWN,  vcar  );

Ее  смысл  в  том,  что  при  нажатии  на  кнопку  с  идентификатором  car  выполняется  функция  vcar,  которая  в  дальнейшем  разместит  машину  в  нужном  месте.

Однако  для  начала  приступим  к  созданию  машины.  Будем  рассматривать  её  как  связку  нескольких  точек,  наглядно  образующую  прямоугольник,  который  впоследствии  станет  транспортным  средством.  Чтобы  осуществить  такую  связку,  создадим  четыре  точки.

Далее  свяжем  все  эти  материальные  точки  путем  создания  объектов  класса  SpringConstraint.  Как  мы  видим,  теперь  у  нас  есть  4  точки,  соединенные  между  собой  последовательно  так,  что  вся  конструкция  выглядит  как  прямоугольник.  Объявим  нашу  группу  в  программе.  Таким  образом,  группа  появится  на  сцене,  пускай  в  ней  даже  ничего  нет.  Объекты  в  группу  можно  добавлять  и  после  ее  объявления  на  сцене:  this.addGroup(CarGroup);

Наконец,  создаем  функцию  vcar,  на  которую  мы  ссылались  ранее,  при  создании  кнопки.  На  данный  момент  объект  все  материальные  точки  в  своей  композиции  лишь  отдаленно  напоминают  машину.  Пора  придать  ей  облик.  Поскольку  мы  условились,  что  пользователь  сам  сможет  выбирать  вес  машины,  то  сделаем  так,  что  внешний  вид  будет  зависеть  именно  от  него.  При  легком  весе  нарисуем  легковую  машину,  при  средней  тяжести  нарисуем  джип,  и  тяжелую  машину  будет  отображать  грузовик.  Для  начала  нарисуем  эти  три  вида  машин,  и  сделаем  из  каждой  объект  MovieClip  со  своим  собственным  идентификатором  для  экспорта  в  ActionScript.  Теперь,  когда  у  нас  есть  «во  что  наряжать»  наши  транспортные  средства,  можно  приступить  к  созданию  дополнительных  кнопок  на  окне  интерфейса  изменения  характеристик  машины.  Добавим  три  кнопки:  Heavy,  Medium,  Light,  отвечающие  за  выбор  тяжелой,  средней  тяжести  и  легковой  машины  соответственно.  Теперь,  когда  вид  транспортного  средства  полностью  зависит  от  пользователя,  можно  приступить  к  реализации  следующего  шага  нашего  задания:  различные  погодные  условия.  Рассмотрим  три  варианта:  солнечная  погода  —  дорога  с  хорошим  сцеплением  с  машинами;  дождливая  —  достаточно  скользкая  дорога;  гололёд  —  максимально  скользкая  дорога.

В  данной  работе  изучен  язык  программирования  ActionScript  3.0,  изучена  модель  движения  материальной  точки,  системы  материальных  точек  на  плоскости.  Проанализированы  модели  столкновения  материальных  точек  с  объектами  на  плоскости.  Разработан  симулятор  дорожно-транспортных  происшествий,  использующий  модели  движения  материальной  точки,  системы  материальных  точек,  столкновения  с  другими  объектами.  Проанализированы  различные  примеры  аварийных  ситуаций  на  дороге.

 

Список  литературы:

1.Артур  Гордон  Вебстер.  Механика  материальных  точек,  твердых,  упругих  и  жидких  тел,  Т.  1.  Механика  материальной  точки  и  системы.  Издательство  «ЛКИ»,  2008. 

2.Бухгольц  Н.Н.  Основной  курс  теоретической  механики.  Ч.2.  Динамика  и  системы  материальных  точек.  Издательство  «Лань»,  2009.

3.Колин  Мук.  Essential  ActionScript  3.0.  Издательство  «O’Reily»,  2007.

4.Томас  Якобсен.  Advanced  Character  Physics.  Издательство  «IO  Interactive”,  2003.

5.Эндрю  Виткин.  Physically  Based  Modeling:  Principles  and  Practice.  Издательство  «Siggraph»,  1997.

Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий