Симулятор спортивного воздушного змея
Лагранжева механика как один из распространенных способов решения механических задач, который имеет преимущества по сравнению с Ньютоновой механикой. Знакомство с основными подходами к моделированию воздушного змея, основанные на Лагранжевой механике.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 17.07.2020 |
Размер файла | 5,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Симулятор спортивного воздушного змея
Введение
Обучение управлению спортивным воздушным змеем может представлять трудности для начинающих, когда они пытаются понять основные принципы управления спортивным воздушным змеем самостоятельно. Одним из решений данной проблемы является создание симулятора спортивного воздушного змея. К сожалению, существующие решения, которые могут использоваться при обучении управлению спортивным воздушным змеем, или не позволяют пользователям управлять воздушным змеем, или доступны для малого количества пользователей.
Целью данной работы является создание симулятора спортивного воздушного змея для браузера. В данной работы рассматриваются подходы к моделированию воздушного змея, основанные на Лагранжевой механике, и описывается реализация разработанной программы.
Обучение управлению спортивным воздушным змеем может представлять трудности для начинающих, когда они пытаются понять основные принципы управления спортивным воздушным змеем самостоятельно. Одним из решений данной проблемы является создание симулятора спортивного воздушного змея. К сожалению, существующие решения, которые могут использоваться при обучении управлению спортивным воздушным змеем, или не позволяют пользователям управлять воздушным змеем, или доступны для малого количества пользователей.
Целью данной работы является создание симулятора спортивного воздушного змея для браузера. В данной работы рассматриваются подходы к моделированию воздушного змея, основанные на Лагранжевой механике, и описывается реализация разработанной программы.
1.Определения, обозначения и сокращения
Спортивный воздушный змей - воздушный змей, которые обычно имеет жёсткий каркас и треугольную форму и управляется с помощью двух лееров.
Леер - тонкая верёвка, которая прикрепляется к воздушному змею с помощью уздечки и позволяет управлять воздушным змеем.
Уздечка - система тонких верёвок, которая позволяет правильно прикрепить леер к воздушному змею.
Окно ветра - пространство перед пилотом, где возможен полёт воздушного змея.
Физическая модель воздушного змея - математическая модель для расчёта движения воздушного змея с учётом законов физики.
Лагранжева механика - один из способов решения механических задач, который имеет преимущества по сравнению с Ньютоновой механикой.
Продольная ось воздушного змея - ось вращения, которая совпадает с осью симметрии воздушного змея.
Поперечная ось воздушного змея - ось вращения, которая перпендикулярна плоскости симметрии воздушного змея.
Вертикальная ось воздушного змея - ось вращения, которая лежит в плоскости симметрии воздушного змея и перпендикулярна продольной оси вращения.
Угол атаки воздушного змея - угол между продольной осью воздушного змея и направлением набегающего потока воздуха по вертикали.
Угол скольжения воздушного змея - угол между продольной осью воздушного змея и направлением набегающего потока воздуха по горизонтали. Размах воздушного змея - ширина воздушного змея.
Хорда воздушного змея - высота воздушного змея.
Шейдер - программа для графического процессора
Спортивный воздушный змей - это один из типов воздушных змеев, который обычно имеет жёсткий каркас и треугольную форму. В отличие от воздушного змея с одни леером, спортивный воздушный змей управляется с помощью двух лееров и может выполнять в воздухе разные манёвры и трюки. Лееры прикрепляются к спортивному воздушному змею с помощью уздечек. Свободные концы лееров держит пилот с помощью петель.
Схема спортивного воздушного змея представлен на рис. 1:
Рисунок 1. Схема спортивного воздушного змея.
механический воздушный змей
Спортивный воздушный змей управляется с помощью изменения длины лееров. Для поворота против часовой или по часовой стрелке необходимо натянуть левый или правый леер соответственно. Также лееры могут быть ослаблены для достижения противоположного эффекта. Одновременное натяжение одного леера и ослабление другого леера позволяют точно контролировать траекторию воздушного змея. Основным понятием, связанным с управлением спортивным воздушным змеем, является окно ветра - пространство перед пилотом, где возможен полёт воздушного змея. Натяжение лееров и скорость воздушного змея выше всего в центре окна ветра и уменьшаются при приближении воздушного змея к краю окна ветра. Схема окна ветра представлена на рис. 2:
Рисунок 2. Окно ветра [1].
Так как спортивный воздушный змей сильно отличается от воздушного змея с одним леером, то обучение управлению спортивным воздушным змеем может представлять трудности для начинающих. Для того, чтобы успешно запустить спортивный воздушный змей, необходимо знать основные принципы управления спортивным воздушным змеем и такие понятия, как окно ветра. Несмотря на возможность научиться управлять спортивным воздушным змеем без помощи опытного пилота, может потребоваться больше времени, чтобы начать чувствовать воздушный змей.
Одним из возможных решений данной проблемы является создание симулятора спортивного воздушного змея. Симуляторы часто применяются при обучении управлению летательными аппаратами, так как при полёте летательного аппарата имеется риск его столкновения с землёй и повреждения. К сожалению, существующие решения или не позволяют управлять воздушным змеем [5], или доступны для малого количества пользователей [6].
Целью данной работы является разработка симулятора спортивного воздушного змея с использованием веб-технологий. Использование веб-технологий позволяет сделать программу доступной для большего количества пользователей, так как программа может работать на любой платформе, где есть поддерживаемый браузер.
Программа поможет начинающим изучить основные принципы управления спортивным воздушным змеем во время управления воздушным змеем в симуляторе с помощью геймпада. В результате начинающие смогут успешно запустить настоящий воздушный змей и избежать распространённых ошибок.
Основными задачами работы являются:
1) обзор и анализ подходов к моделированию воздушного змея;
2) обзор и анализ существующих решений;
3) выбор физической модели воздушного змея;
4) выбор технологий и инструментов реализации;
5) создание трёхмерной модели воздушного змея;
6) реализация физической модели воздушного змея;
7) настройка физической модели воздушного змея;
8) создание интерактивных уроков для обучения управлению воздушным змеем;
9) разработка технической документации;
10) анализ полученных результатов;
11) определение направлений дальнейшей работы.
Работа имеет следующую структуру.
В главе 1 приведены обзор и анализ подходов к моделированию воздушного змея, обзор и анализ существующих решений, особенности разрабатываемой программы, обоснование выбора физической модели воздушного змея, цель и задачи разработки.
В главе 2 приведены описание выбранной физической модели воздушного змея, модификации физической модели воздушного змея, сделанные в работе, и выбранные параметры физической модели воздушного змея.
В главе 3 приведены функциональные требования к разрабатываемой программе, обоснование выбора технологий и инструментов реализации, описание реализации разрабатываемой программы и примеры использования программы.
В заключении приведены основные полученные результаты и пути дальнейшей работы.
В приложениях А-Г приведена техническая документация к разрабатываемой программе.
2.Обзор
2.1 Подходы к моделированию воздушного змея
Несмотря на отсутствие работ посвящённых симуляции спортивного воздушного змея, некоторые результаты могут быть найдены в области преобразования энергии ветра с помощью летательных аппаратов (Airborne Wind Energy, [2], [3], [4]), в которой ведётся активная работа. Одним из подходов в этой области является использование воздушного змея типа парафойл [2] с двумя леерами для приведения в движение генератора на земле. Воздушный змей типа парафойл с двумя леерами и спортивный воздушный змей имеют одинаковые принципы управления, поэтому физическая модель воздушного змея типа парафойл с двумя леерами может быть адаптирована для спортивного воздушного змея.
В работе [2] описывается симуляция воздушного змея типа парафойл с двумя леерами. Воздушный змей представляется в виде жёсткого тела, которое имеет массу, момент инерции и аэродинамические свойства (коэффициенты подъемной силы, сопротивления воздуха и моментов, создаваемых набегающим потоком воздуха). Лееры представляются в виде прямых жёстких стержней без массы.
В работе [3] представлен обзор программы для математической среды Matlab, которая называется LAKSA (Lagrangian Kite SimulAtors). Программа имеет модульную архитектуру и включает в себя четыре разных симулятора. Первый симулятор - это симулятор воздушного змея типа парафойл с двумя леерами, описанный в предыдущей работе. Остальные три симулятора - это симулятор планера с винтами и одним леером, симулятор воздушного змея типа парафойл с четырьмя леерами и симулятор нескольких связанных воздушных змеев или планеров.
В работе [4] более детально рассматривается модель планера с винтами и одним леером, использованная в программе LAKSA.
Все симуляторы в представленных работах [2], [3] и [4] основаны на Лагранжевой механике, которая является одним из способов решения механических задач. Преимуществами Лагранжевой механики по сравнению с Ньютоновой механикой являются возможность использования произвольной системы координаты, отсутствие ограничивающих сил при правильном выборе системы координат и более низкая вычислительная сложность уравнений.
В программе LAKSA симуляция выполняется в несколько этапов. Сначала находится состояние воздушного змея в точках на заданном интервале времени с помощью интегрирования уравнений движения воздушного змея. Затем полученные результаты обрабатываются и по ним строится график, показывающий движение воздушного змея на заданном интервале времени.
2.2 Существующие решения
Существует несколько решений, которые могут помочь начинающим научиться управлять спортивным воздушным змеем.
Первое решение является сайтом компании Prism [5], которая проектирует и выпускает воздушные змеи разных типов, включая спортивные воздушные змеи. Сайт содержит анимации манёвров спортивного воздушного змея для Adobe Flash Player, которые объясняют основные принципы управления воздушным змеем, а также продвинутые трюки.
Скриншот сайта компании Prism представлен на рис. 3:
Рисунок 3. Сайт компании Prism [5].
В каждой анимации показывается положение воздушного змея в окне ветра и соответствующие движения рук пилота. Каждая анимация сопровождается текстовым описанием.
Скриншот анимации, объясняющей понятие окна ветра, представлен на рис. 4:
Рисунок 4. Анимация, объясняющая понятие окна ветра [5].
Преимуществом анимаций на сайте компании Prism является большое количество объясняемых принципов управления воздушным змеем и трюков, поэтому анимации могут быть полезными как для начинающих, так и для более опытных пилотов.
Недостатком анимаций на сайте компании Prism является необходимость запоминать правильные движения рук без возможности управлять воздушным змеем. Начинающим может быть трудно повторить правильные движения рук при запуске настоящего воздушного змея, если у них нет достаточного опыта. Кроме того, для работы анимаций необходима установка дополнения Adobe Flash Player для браузера.
Второе решение является игрой Stunt Kite Masters VR [6] для очков виртуальной реальности. Игра позволяет управлять воздушными змеями нескольких типов с двумя леерами, включая спортивный воздушный змей, с помощью геймпада или контроллеров для дополненной реальности. Игра содержит несколько трёхмерных сцен, поддерживает режим свободного полёта и несколько режимов игры.
Скриншот режима свободного полёта представлен на рис. 5:
Рисунок 5. Режим свободного полёта [6].
Скриншот одного из режимов игры, который называется «Змейка», представлен на рис. 6:
Рисунок 6. Режим игры «Змейка» [6].
Также игра поддерживает изменение длины лееров и направления ветра и отображение траектории воздушного змея с помощью дыма.
Преимуществом игры Stunt Kite Masters VR является высокая реалистичность управления воздушным змеем за счёт применения очков виртуальной реальности и специальных контроллеров.
Недостатком игры Stunt Kite Masters VR является необходимость наличия очков виртуальной реальности, которые есть у малого количества пользователей. Также игра не содержит инструкций, объясняющих, как управлять воздушным змеем.
Таким образом, в настоящий момент времени не существует решения, которое одновременно является симулятором (позволяет управлять воздушным змеем), объясняет основные принципы управления воздушным змеем и доступно для большого количества пользователей.
2.3 Особенности разрабатываемой программы
Разрабатываемая программа объединяет преимущества анимаций на сайте компании Prism и игры Stunt Kite Masters VR. Программа содержит интерактивные уроки с заданиями, которые объясняют основные принципы управления воздушным змеем, и позволяет управлять воздушным змеем с помощью геймпада. Программа поддерживает режимы обучения и свободного полёта. В режиме обучения программа позволяет выполнять интерактивные уроки и отображает на экране задания. В режиме свободного полёта программа позволяет тренировать управление воздушным змеем, а также настраивать длину лееров и скорость ветра.
Программа разрабатывается с использованием веб-технологий, что позволяет сделать программу доступной для большего количества пользователей, но ограничивает производительность программы по сравнению с нативными приложениями за счёт выполнения программы в браузере.
2.4 Выбор модели воздушного змея
Для реализации в программе была выбрана модель воздушного змея типа парафойл с двумя леерами, представленная в работе [2], так как этой тип воздушного имеет много общего со спортивным воздушным змеем. Также представление лееров в виде прямых жёстких стержней позволяет упростить отображение перекрученных лееров.
Выбранная модель не позволяет выполнять трюки, которые требуют сильного ослабления лееров, но после изучения основных принципов управления воздушным змеем, обучение трюкам легче выполнять с настоящим воздушным змеем, который имеет физическую обратную связь.
В отличие от программы LAKSA, разрабатываемая программа выполняет симуляцию в режиме реального времени.
1.5. Задачи разработки программы
Задачами разработки симулятора спортивного воздушного змея для браузера являются:
1) создание трёхмерной модели воздушного змея;
2) реализация трёхмерной сцены;
3) реализация физической модели воздушного змея;
4) настройка физической модели воздушного змея;
5) реализация управления с помощью геймпада;
6) реализация режима свободного полёта;
7) реализация режима обучения;
8) создание интерактивных уроков для режима обучения;
9) реализация графического пользовательского интерфейса;
10) реализация сохранения настроек и прогресса обучения.
В этой главе были рассмотрены подходы к моделированию воздушного змея в области преобразования энергии ветра с помощью летательных аппаратов (Airborne Wind Energy, [2], [3], [4]), основанные на Лагранжевой механике, а также существующие решения, которые могут быть использованы при обучении управлению спортивным воздушным змеем (анимации на сайте компании Prism и игра Stunt Kite Masters VR), их преимущества и недостатки. Кроме того, были описаны особенности разрабатываемой программы по сравнению с существующими решениями, обоснован выбор модели воздушного змея типа парафойл с двумя леерами для реализации в программе и представлены задачи, которые необходимо решить при разработке программы.
3. Физическая модель воздушного змея
3.1 Описание физической модели воздушного змея
3.1.1 Система координат
Физическая система воздушного змея и лееров имеет четыре степени свободы, поэтому для описания состояния воздушного змея необходимо четыре переменные.
Для определения положения воздушного змея в пространстве используются четыре системы отсчёта , , и (рис. 7, 8 и 9).
Начальная точка системы отсчёта , связанной с землёй, совпадает с точкой пересечения лееров.
Начальная точка системы отсчёта совпадает с начальной точкой системы отсчёта , при этом система отсчёта повёрнута таким образом, что оси и лежат в плоскости . Плоскость является плоскостью треугольника , образованного точкой пересечения лееров и точками крепления лееров к воздушному змею. Поворот системы отсчёта относительно системы отсчёта задаётся с помощью углов и (рис. 7).
Начальная точка системы отсчёта совпадает с серединой между точками крепления лееров к воздушному змею, оси и лежат в плоскости , при этом система отсчёта повёрнута относительно системы отсчёта на угол (рис. 8).
Начальная точка системы отсчёта совпадает с центром тяжести воздушного змея, оси и лежат в плоскости, образованной осями и , при этом система отсчёта повернута относительно системы отсчёта на угол (рис. 9).
Для преобразования координат из одной системы отсчёта в другую используются матрицы поворота , и . Так как матрицы поворота являются ортогональными, то матрицы для обратного преобразования координат могут быть получены с помощью транспонирования исходных матриц.
Для описания состояния воздушного змея используются углы , , и , которые являются координатами воздушного змея в формулировке Лагранжевой механики, и их скорость изменения.
Для описания управления воздушным змеем используется расстояние ( на рис. 7 и рис. 8) и угол (рис. 8) и их скорость и ускорение изменения (не используются в разрабатываемой программе). Расстояние и угол зависят от длин левого и правого лееров.
Рисунок 7. Переменные состояния и управления [2].
Рисунок 8. Переменные состояния и управления (плоскость ) [2].
Рисунок 9. Переменная состояния .
механический воздушный змей
Переменные состояния , , и объединяются в вектор :
Переменные управления и объединяются в вектор :
3.1.2 Уравнение движения
Для того, чтобы найти положение воздушного змея через заданное время, необходимо найти ускорение изменения переменных состояния.
Основой Лагранжевой механики является Лагранжиан:
где - кинетическая энергия и - потенциальная энергия.
Уравнение движения может быть получено с помощью нахождения производных Лагранжиана и подстановки их в уравнение (4):
где - координата с индексом , - скорость изменения координаты с индексом и - время.
При наличии сил, которые изменяют полную энергию физической системы, они могут быть включены в правую часть уравнения движения:
где - компонента силы по координате с индексом .
В физической модели воздушного змея такими силами являются аэродинамические силы (подъёмная сила, сопротивление воздуха и моменты, создаваемые набегающим потоком воздуха).
Для упрощения выражений в физической модели воздушного змея используются безразмерные переменные. Физические величины преобразуются в безразмерные физические величины с использованием ускорения свободного падения , начальной длины лееров и массы воздушного змея .
Например, время может быть преобразовано в безразмерное время по формуле (6):
где - время в секундах, - ускорение свободного падения в метрах на секунду в квадрате и - начальная длина лееров в метрах.
При выражении положения в пространстве, линейной скорости и угловой скорости воздушного змея через переменные состояния определяются матрицы , и .
Матрицы и используются при вычислении линейной скорости воздушного змея по формуле (7):
где - скорость изменения переменных состояния и - скорость изменения переменных управления.
Матрица используется при вычислении угловой скорости воздушного змея по формуле (8):
При выражении кинетической энергии воздушного змея с помощью линейной скорости и угловой скорости воздушного змея она может быть представлена в виде:
где скорость изменения переменных состояния, - скорость изменения переменных управления, ( - диагональная матрица моментов инерции воздушного змея), , .
При выражении потенциальной энергии воздушного змея с помощью положения воздушного змея в пространстве она может быть представлена в виде:
где и - смещение точек крепления лееров относительно центра тяжести воздушного змея.
Аэродинамическая модель в физической модели воздушного змея позволяет задавать силы и моменты, создаваемые набегающим потоком воздуха, с помощью аэродинамических коэффициентов.
Аэродинамическая сила вычисляется по формуле (11):
где ( - плотность воздуха, - площадь поверхности воздушного змея, - начальная длина лееров, - масса воздушного змея), - скорость набегающего потока воздуха, - угол атаки, - угол скольжения, , , , и - аэродинамические коэффициенты, , и вектора базиса системы отсчёта .
Аэродинамический момент вычисляется по формуле (12):
где ( - плотность воздуха, - площадь поверхности воздушного змея, - начальная длина лееров, - масса воздушного змея), - скорость набегающего потока воздуха, - угол атаки, - угол скольжения, ( - размах воздушного змея), ( - хорда воздушного змея), , , (, , - компоненты угловой скорости воздушного змея, - скорость отсчёта для аэродинамической модели), , , , , , и - аэродинамические коэффициенты, , и вектора базиса системы отсчёта .
Индексы аэродинамических коэффициентов , и обозначают оси, по которым создаются силы.
Индексы аэродинамических коэффициентов , и обозначают оси, во круг которых создаются моменты.
Аэродинамические коэффициенты с индексом определяют постоянный вклад в силу или момент.
Аэродинамические коэффициенты с индексом определяют вклад в силу или момент в зависимости от угла атаки .
Аэродинамические коэффициенты с индексом определяют вклад в силу или момент в зависимости от угла скольжения .
Аэродинамические коэффициенты с индексами , и определяют вклад в момент в зависимости от угловой скорости воздушного змея.
При нахождении производных Лагранжиана и подстановки их в уравнение движения система уравнений движения для всех четырёх переменных состояния может быть представлена в следующем виде:
где - индекс переменной состояния, и - индексы суммирования, - скорость изменения переменных состояния, - ускорение изменения переменных состояния, - скорость изменения переменных управления, - ускорение изменения переменных управления, - потенциальная энергия, - аэродинамическая сила и - аэродинамический момент.
3.1.3 Решение уравнения движения
При вычислении значения слагаемых в системе (13) и приведении её к матричному виду она может быть представлена в виде:
где RHS - сумма всех слагаемых, перенесённых в правую часть системы (13). Так как система должна иметь единственное решение, то решение системы может быть получено с помощью нахождения обратной матрицы :
3.2 Модификации физической модели воздушного змея
В физической модели воздушного змея изменение угла влияет на положение воздушного змея в пространстве при сохранении значения угла (рис. 10):
Рисунок 10. Перемещение воздушного змея в пространстве при изменении угла .
Такое движение воздушного змея не является реалистичным, так как при изменении длины лееров воздушный змей должен поворачиваться вокруг своей продольной оси, а не перемещаться в пространстве, поэтому в разрабатываемой программе значение угла корректируется на изменение значения угла .
В разрабатываемой программе для управления воздушным змеем используется геймпад с двумя аналоговыми стиками. Длина левого и правого лееров изменяется с помощью левого и правого аналоговых стиков соответственно. При быстром изменении положения аналоговых стиков скорость и ускорение изменения переменных управления принимают очень большие абсолютные значения. Это приводит к нестабильности симуляции, поэтому в разрабатываемой программе скорость и ускорение переменных управления не используются и считаются равными нулю. Равенство скорости и ускорения изменения переменных управления нулю позволяет упростить систему (13):
В результате необходимо вычислять только матрицы , и , а матрицы , и вычислять не нужно.
3.3 Выбранные параметры физической модели воздушного змея
Параметры физической модели воздушного змея можно разделить на параметры окружающей среды и параметры воздушного змея.
Параметрами окружающей среду являются:
1) ускорение свободного падения ;
2) плотность воздуха ;
3) скорость ветра (настраиваемый параметр в разрабатываемой программе).
Параметрами воздушного змея являются:
1) масса ;
2) момент инерции вокруг продольной оси ;
3) момент инерции вокруг поперечной оси ;
4) момент инерции вокруг вертикальной оси ;
5) смещение точек крепления лееров относительно центра тяжести , и ;
6) аэродинамические коэффициенты , , , , , , , , , , и ;
7) скорость отсчёта для аэродинамической модели ;
8) площадь поверхности ;
9) размах ;
10) хорда ;
11) начальная длина лееров (настраиваемый параметр в разрабатываемой программе);
12) максимальное изменение длины лееров (отсутствует в работе [2]).
Все параметры воздушного змея кроме аэродинамических коэффициентов, скорости отсчёта для аэродинамической модели и максимального изменения длины лееров были получены с помощью измерения настоящего воздушного змея.
Аэродинамические коэффициенты были подобраны таким образом, чтобы обеспечить реалистичное движение воздушного змея и возможность воздушного змея поворачивать при изменении длины лееров.
Возможность воздушного змея поворачивать при изменении длины лееров определяется значением аэродинамического коэффициента , который отвечает за величину момента, создаваемого вокруг вертикальной оси воздушного змея набегающим потоком воздуха.
Скорость отсчёта для аэродинамической модели была выбрана как минимальная скорость ветра, при которой возможен полёт воздушного змея во всём окне ветра.
Максимальное изменение длины лееров было подобрано таким образом, чтобы управление воздушным змеем не было очень чувствительным, но позволяло выполнять все необходимые манёвры.
Выбранные параметры физической модели воздушного змея представлены в таблице 1:
Таблица 1. Выбранные параметры физической модели воздушного змея
Параметр |
Выбранное значение |
Параметр |
Выбранное значение |
|
9.81 м/c2 |
-3 |
|||
1.225 кг/м3 |
-0.1 |
|||
0.22 кг |
-0.1 |
|||
0.08 кгм2 |
0.1 |
|||
0.01 кгм2 |
-0.7 |
|||
0.08 кгм2 |
-0.1 |
|||
-0.08 м |
0.5 |
|||
0.3 м |
-0.01 |
|||
-0.26 м |
6 м/с |
|||
-0.05 |
0.6 м2 |
|||
0.1 |
1.74 м |
|||
-3 |
0.69 м |
|||
0.1 |
0.1 м |
В этой главе была представлена система координат, которая используется для описания состояния воздушного змея, сделано краткое введение в Лагранжеву механику и показан вывод уравнения движения воздушного змея в формулировке Лагренжевой механики. Также были описаны сделанные в работе модификации и выбранные параметры физической модели воздушного змея.
4. Реализация разрабатываемой программы
4.1 Функциональные требования
К функциям разрабатываемой программы предъявляются следующие требования:
1) трёхмерная сцена должна содержать:
- поверхность земли;
- небо;
- спортивный воздушный змей;
2) программа должна поддерживать управление спортивным воздушным змеем с помощью геймпада;
3) программа должна поддерживать настройку геймпада;
4) программа должна поддерживать режимы свободного полёта и обучения;
5) программа должна поддерживать изменение скорости ветра и длины лееров в режиме свободного полёта;
6) программа должна поддерживать выполнение интерактивных уроков с заданиями в режиме обучения;
7) программа должна поддерживать сохранение настроек геймпада и прогресса в режиме обучения.
К графическому пользовательскому интерфейсу программы предъявляются следующие требования:
1) программа должна изменять направление камеры в трёхмерной сцене вместе с движением спортивного воздушного змея.
2) программа должна содержать графические элементы управления, позволяющие:
- перейти в меню;
- начать полёт заново;
- остановить полёт;
- продолжить полёт;
3) меню программы должно содержать графические элементы управления, позволяющие:
- настроить геймпад;
- изменить скорость ветра и длину лееров в режиме свободного полёта;
- выбрать урок в режиме обучения;
4) во всех режимах программа должна отображать:
- направление и скорость ветра;
- длину лееров;
- название режима;
- подсказки по использованию программы;
5) в режиме обучения программа должна отображать:
- область, в которой должен находиться спортивный воздушный змей;
- название урока;
- задания урока.
4.2 Выбор технологий и инструментов реализации
Так как программа разрабатывается с использованием веб-технологий, то для разработки программы используется язык программирования JavaScript, язык описания разметки HTML5 и язык описания стилей CSS.
Для реализации трёхмерной графики была выбрана библиотека three.js [7], которая упрощает разработку приложений с трёхмерной графикой по сравнению с использованием API трёхмерной графики WebGL [8].
Библиотека three.js поддерживает:
1) Сцены;
2) Объекты;
3) Материалы;
4) Источники освещения;
5) Камеры;
6) Тени;
7) Векторную и матричную математику;
8) Загрузку трёхмерных моделей;
и другие возможности.
Библиотека three.js использует внутри API трёхмерной графики WebGL для отображения объектов. Несмотря на то, что при работе с библиотекой three.js не требуется написание шейдеров на языке программирования GLSL, шейдеры могут быть использованы для отображения объектов с помощью материалов ShaderMaterial и RawShaderMaterial, если необходимо реализовать эффекты, которые не поддерживаются библиотекой three.js.
В качестве интегрированной среды разработки была выбрана программа WebStorm, которая имеет встроенный сервер для запуска веб-приложений. Также для программы WebStorm доступно дополнение GLSL Support для подсветки синтаксиса кода шейдеров.
Для создания трёхмерных моделей была выбрана программа Blender, которая поддерживает экспорт трёхмерных моделей в формате glTF [9] (GL Transmission Format). Формат glTF рекомендуется для использования вместе с библиотекой three.js.
Формат glTF является открытым форматом, который предназначен для эффективной передачи и загрузки трёхмерных моделей. Формат glTF позволяет уменьшить размер файлов трёхмерных моделей и время их обработки за счёт хранения данных трёхмерной модели в максимально близком виде к данным, которые передаются в память графического процессора.
Формат glTF поддерживает бинарные файлы трёхмерных моделей с расширением .glb и текстовые файлы трёхмерных моделей с расширением .gltf.
4.3 Описание реализации разрабатываемой программы
4.3.1 Трёхмерная модель воздушного змея
Трёхмерные модели воздушного змея и лееров были созданы в программе Blender и экспортированы в бинарные файлы в формате glTF.
Скриншот окна программы Blender с трёхмерной моделью воздушного змея представлен на рис. 11:
Рисунок 11. Трёхмерная модель воздушного змея
Парус воздушного змея отображается с помощью плоскостей, у которых при отрисовке выводятся обе стороны. Все треугольные грани паруса воздушного змея имеют разный цвет для того, чтобы облегчить определение ориентации воздушного змея в пространстве.
Каркас воздушного змея отображается с помощью цилиндров чёрного цвета.
Парус и каркас воздушного змея имеют материалы, которые учитывают свойства материала и освещения (PBR или Physically Based Rendering Material).
Уздечки и лееры отображаются с помощью цилиндров белого цвета.
Уздечки и лееры имеют материал, который не учитывает освещение и отображает объект одним цветом (Shadeless или Unlit Material).
Таким образом, уздечки и лееры хорошо видны вне зависимости от положения камеры.
4.3.2 Трехмерная сцена
Небо в трёхмерной сцене отображается с помощью кубической текстуры, которая состоит из шести текстур для каждой грани куба. Текстуры неба были загружены из Unity Asset Store в составе пакета Classic Skybox [10].
Текстуры неба представлены на рис. 12:
Рисунок 12. Текстуры неба.
Для отображения неба кубическая текстура устанавливается как фон трёхмерной сцены.
Трёхмерная сцена включает рассеянный и направленный источники света белого цвета. Рассеянный источник света имеет интенсивность . Направленный источник имеет интенсивность и направлен вертикально сверху вниз.
Кроме неба, которое является фоном трёхмерной сцены, трёхмерная сцена содержит следующие объекты:
1) землю;
2) стрелку, которая показывает направление ветра;
3) тень воздушного змея;
4) воздушный змей;
5) части лееров;
6) область, в которой должен находиться воздушный змей (отображается в режиме обучения).
Земля отображается с помощью круга, который имеет материал с текстурой.
Текстура земли представлена на рис. 13:
Рисунок 13. Текстура земли
Так как текстура земли применяется без повторения, то на земле не появляются заметные полосы.
Стрелка, которая показывает направление ветра, отображается с помощью плоскости, у которой при отрисовке выводятся обе стороны. Плоскость имеет материал с текстурой стрелки и прозрачностью. Прозрачность материала равна для того, чтобы через стрелку были видны объекты трёхмерной сцены.
Текстура стрелки, которая показывает направление ветра, представлена на рис. 14 (серым цветом показана прозрачная область текстуры):
Рисунок 14. Текстура стрелки, которая показывает направление ветра.
При изменении направления камеры стрелка перемещается так, чтобы оставаться относительно камеры на одном месте, при этом направление стрелки в трёхмерной сцене сохраняется.
Несмотря на то, что в библиотеке three.js есть поддержка отображения теней, тень воздушного змея отображается с помощью плоскость, которая имеет материал с текстурой тени и прозрачностью. Это повышает производительность, так как при использовании встроенного в библиотеку three.js метода отображения теней необходима ещё одна отрисовка трёхмерной сцены из точки, в которой находится источник света.
Текстура тени воздушного змея показана на рис. 15:
Рисунок 15. Текстура тени воздушного змея.
При изменении положения воздушного змея тень перемещается по земле вместе с воздушным змеем.
В физической модели воздушного змея лееры пересекаются в одной точке, но в программе лееры отображаются так, как если свободные концы лееров держит пилот, поэтому лееры могут перекручиваться во время полёта.
Каждый леер состоит из двух частей (первой и второй части), которые являются отдельными объектами в трёхмерной сцене. Начальная длина частей лееров равна одному метру.
Если лееры не перекручиваются, то для отображения лееров используются только первые части лееров, которые поворачиваются и масштабируются по длине так, чтобы их концы совпадали с точками крепления лееров к воздушному змею.
Если лееры перекручиваются, то для отображения лееров используются все части лееров. Первые части лееров масштабируются по длине так, чтобы их концы сходились в точке перекручивания лееров. Вторые части лееров перемещаются так, чтобы они находились в точке перекручивания лееров, и поворачиваются и масштабируются по длине так, чтобы их концы совпадали с точками крепления лееров к воздушному змею.
Для определения перекручивания лееров отслеживается количество поворотов воздушного змея против часовой или по часовой стрелки.
В режиме обучения область, в которой должен находиться воздушный змей, отображается с помощью части сферы, которая имеет материал с прозрачностью. Для того, чтобы края области не были резкими, используется материал RawShaderMaterial со специальными вершинным и фрагментным шейдерами.
Материал области позволяет отображать плавный переход с помощью постепенного увеличения прозрачности краёв области.
Параметрами материала области являются:
1) цвет области;
2) непрозрачность области;
3) ширина края области, для которого отображается плавный переход.
В вершинный шейдер вместе с координатами вершины сетки области передаётся расстояние от вершины сетки до края области по горизонтали и вертикали в градусах. Затем расстояние до края области передаётся в фрагментный шейдер и интерполируется для каждого пикселя области. В конце рассчитывается прозрачность пикселя области на основе параметров материала и расстояния до края области.
Код вершинного шейдера для материала области представлен в листинге 1:
Листинг 1. Вершинный шейдер материала области.
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
attribute vec3 position;
attribute vec2 distance;
varying vec2 v_distance;
void main() {
v_distance = distance;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
Код фрагментного шейдера для материала области представлен в листинге 2:
Листинг 2. Фрагментный шейдер материала области.
precision mediump float;
uniform vec3 color;
uniform float opacity;
uniform float edge;
varying vec2 v_distance;
void main() {
vec2 a = min(v_distance / edge, 1.0);
gl_FragColor = vec4(color, opacity * a.x * a.y);
}
При изменении области, в которой должен находиться воздушный змей, координаты вершин сетки области и расстояния до края области обновляются.
4.3.3 Физическая модель воздушного змея
Физическая модель воздушного змея реализована с помощью модулей JavaScript [11], которые находятся в директории src/js/kite.
Модуль rotation-matrices.js содержит класс RotationMatrices, который предназначен для вычисления матриц поворота систем отсчёта относительно друг друга.
Модуль ups-s-matrix.js содержит класс UPSsMatrix, который предназначен для вычисления матрицы и её производных по переменным состояния.
Модуль phi-matrix.js содержит класс PhiMatrix, который предназначен для вычисления матрицы и её производных по переменным состояния.
Модуль m-s-matrix.js содержит класс MsMatrix, который предназначен для вычисления матрицы и её производных по переменным состояния.
Модуль potential-energy.js содержит класс PotentialEnergy, который предназначен для вычисления производных потенциальной энергии по переменным состояния.
Модуль aerodynamics.js содержит класс Aerodynamics, который предназначен для вычисления аэродинамических сил и моментов.
Классы RotationMatrices, UPSsMatrix, PhiMatrix, MsMatrix, PotentialEnergy и Aerodynamics содержат метод update() для обновления результатов вычислений.
Модуль kite-parameters.js содержит класс KiteParameters, который предназначен для хранения параметров физической модели воздушного змея и преобразования параметров в безразмерные параметры.
Модуль kite-state.js содержит класс KiteState, который предназначен для хранения переменных состояния.
Модуль kite-control.js содержит класс KiteControl, который предназначен для хранения переменных управления.
Модуль kite-simulation.js содержит класс KiteSimulation, который предназначен для обновления положения воздушного змея и лееров и определения столкновения воздушного змея с землёй.
Все вычисления в модулях реализованы с помощью классов библиотеки three.js Matrix4 и Vector4, даже если в физической модели воздушного змея используются матрицы и вектора меньшей размерности. Это позволяет переиспользовать матрицы и вектора, которые используются для промежуточных вычислений, в разных выражениях.
Объекты матриц и векторов создаются при запуске программы и переиспользуются при каждом обновлении состояния воздушного змея для повышения производительности.
Так как классы Matrix4 и Vector4 в библиотеке three.js поддерживают не все необходимые операции, то дополнительные операции были реализованы с помощью модулей JavaScript в директории src/js/math.
Модуль matrix-extensions.js добавляет к прототипу класса Matrix4 методы для заполнения матрицы нулями и сложения матриц.
Модуль vector-extensions.js добавляет к прототипу класса Vector4 методы для векторного умножения векторов, вычисления расстояния между точками и преобразования координат из системы отсчёта физической модели воздушного змея, связанной с землёй, в координаты трёхмерной сцены.
Обновление положения воздушного змея и лееров в классе KiteSimulation выполняется в следующей последовательности:
1) обновление переменных управления;
2) обновление переменных состояния необходимое количество раз;
3) обновление положения воздушного змея в трёхмерной сцене;
4) обновление положения лееров в трёхмерной сцене.
Обновление переменных состояния выполняется несколько раз за один кадр для повышения точности вычислений. При обновлении переменных состояния шаг по времени ограничен максимальным значением, которое равно секунды.
Код метода KiteSimulation.updateKiteState(), в котором выполняется обновление переменных состояния необходимое количество раз, приведён в листинге 3:
Листинг 3. Метод KiteSimulation.updateKiteState().
updateKiteState(time) {
let m1 = this.m1;
let m2 = this.m2;
let v1 = this.v1;
let v2 = this.v2;
while (!this.collidesWithGround && time > 0) {
let timeStep;
if (time > MAX_TIME_STEP) {
timeStep = this.kiteParameters.convertTime(MAX_TIME_STEP);
time -= MAX_TIME_STEP;
}
else {
timeStep = this.kiteParameters.convertTime(time);
time = 0;
}
this.upssMatrix.update(this.kiteParameters, this.kiteState, this.kiteControl);
this.vg.copy(this.kiteState.s_t);
this.vg.applyMatrix4(this.upssMatrix.UPSs);
this.phiMatrix.update(this.kiteState)
this.omega.copy(this.kiteState.s_t);
this.omega.applyMatrix4(this.phiMatrix.PHI);
this.msMatrix.update(this.kiteParameters, this.upssMatrix, this.phiMatrix);
this.potentialEnergy.update(this.kiteParameters, this.kiteState, this.kiteControl);
v1.set(-this.kiteParameters.vw, 0, 0, 0);
v1.applyMatrix4(this.rotationMatrices.RBE);
this.va.copy(this.vg);
this.va.sub(v1);
this.aerodynamics.update(this.kiteParameters, this.upssMatrix,
m1.zero();
m2.zero();
for (let i = 0; i < 4; i++) {
m2.copy(this.msMatrix.Ms_s[i]);
m2.multiplyScalar(this.kiteState.s_t.getComponent(i));
m1.add(m2);
v2.copy(this.kiteState.s_t);
v2.applyMatrix4(this.msMatrix.Ms_s[i]);
v1.setComponent(i, v2.dot(this.kiteState.s_t));
}
this.s_t_t.copy(this.aerodynamics.Q);
this.s_t_t.sub(this.potentialEnergy.U_s);
v2.copy(v1);
v2.multiplyScalar(0.5);
this.s_t_t.add(v2);
v2.copy(this.kiteState.s_t);
v2.applyMatrix4(m1);
this.s_t_t.sub(v2);
m2.getInverse(this.msMatrix.Ms);
this.s_t_t.applyMatrix4(m2);
this.s1.copy(this.kiteState.s);
this.kiteState.s.addScaledVector(this.kiteState.s_t, timeStep);
this.kiteState.s_t.addScaledVector(this.s_t_t, timeStep);
this.rotationMatrices.update(this.kiteState);
this.checkCollisionWithGround();
if (this.collidesWithGround) {
this.separateKiteAndGround();
this.crashed = this.vg.length() >= CRASH_SPEED;
}
}
}
В коде программы производные показываются с помощью символа подчёркивания и имени переменной, по которой берётся производная.
Например, s_t - производная переменных состояния по времени (скорость изменения переменных состояния), s_t_t - вторая производная переменных состояния по времени (ускорение изменения переменных состояния).
При каждом обновлении переменных состояния определяется столкновение воздушного змея с землёй с помощью вызова метода KiteSimulation.checkCollisionWithGround(). Так как воздушный змей имеет треугольную форму, то для определения столкновения воздушного змея с землёй достаточно проверить, находится ли одна из вершин треугольника ниже уровня земли.
Код метода KiteSimulation.checkCollisionWithGround() приведён в листинге 4:
Листинг 4. Метод KiteSimulation.checkCollisionWithGround().
checkCollisionWithGround() {
let m1 = this.m1;
let v1 = this.v1;
let v2 = this.v2;
let v3 = this.v3;
let v4 = this.v4;
m1.copy(this.rotationMatrices.R1E).transpose();
let sed = Math.sin(this.kiteState.eta + this.kiteControl.delta);
let ced = Math.cos(this.kiteState.eta + this.kiteControl.delta);
v1.set(0, this.kiteControl.l * sed, -this.kiteControl.l * ced, 0);
v1.applyMatrix4(m1);
m1.copy(this.rotationMatrices.RBE).transpose();
v2.set(this.kiteParameters.xa, 0, this.kiteParameters.za, 0);
v2.applyMatrix4(m1);
v2.negate();
v4.copy(v1);
v4.add(v2);
v4.toWorldSpace();
v4.multiplyScalar(this.kiteParameters.L0);
v4.y += this.height;
v1.copy(KITE_NOSE);
v1.applyMatrix4(m1);
v1.toWorldSpace();
v1.add(v4);
v2.copy(KITE_LEFT_TIP);
v2.applyMatrix4(m1);
v2.toWorldSpace();
v2.add(v4);
v3.copy(KITE_RIGHT_TIP);
v3.applyMatrix4(m1);
v3.toWorldSpace();
v3.add(v4);
this.collidesWithGround = v1.y <= 0 || v2.y <= 0 || v3.y <= 0;
}
Если воздушный змей сталкивается с землёй, то выполняется разделение воздушного змея и земли с помощью вызова метода KiteSimulation.separateKiteAndGround(). Для того, чтобы воздушный змей оставался над поверхностью земли, предыдущие значения переменных состояния интерполируются с текущими значениями переменных состояния в цикле с фиксированным шагом коэффициента интерполяции пока воздушный змей не начнёт сталкиваться с землёй.
Код метода KiteSimulation.separateKiteAndGround() приведён в листинге 5:
Листинг 5. Метод KiteSimulation.separateKiteAndGround().
separateKiteAndGround() {
let s1 = this.s1;
let s2 = this.s2;
s2.copy(this.kiteState.s);
let a = INTERPOLATION_STEP;
this.collidesWithGround = false;
while (!this.collidesWithGround && a < 1) {
this.kiteState.s.copy(s1);
this.kiteState.s.lerp(s2, a);
this.rotationMatrices.update(this.kiteState);
this.checkCollisionWithGround();
a += INTERPOLATION_STEP;
}
this.collidesWithGround = true;
}
Если при столкновении с землёй скорость воздушного змея больше выбранного значения, то считается, что воздушный змей врезался в землю. В противном случае считается, что воздушный змей совершил посадку.
4.3.4 Управление воздушным змеем
Управление воздушным змеем в программе реализовано с помощью Gamepad API [12], который позволяет использовать геймпад в браузере.
Для изменения длины лееров используются значения вертикальных осей аналоговых стиков геймпада, которые изменяются от до . При обновлении состояния переменных управления значения вертикальных осей геймпада умножаются на максимальное изменение длины лееров.
Код метода KiteSimulation.updateKiteControl(), в котором выполняется обновление переменных управления, представлен в листинге 6:
Листинг 6. Метод KiteSimulation.updateKiteControl().
updateKiteControl() {
let ya = this.kiteParameters.ya;
let kiteControl = this.kiteControl;
let lp = 1 - this.gamepadInput.leftStickY * this.kiteParameters.deflection
let ln = 1 - this.gamepadInput.rightStickY *
this.kiteParameters.deflection;
let l = Math.sqrt(0.5 * (lp * lp + ln * ln - 2 * ya * ya));
kiteControl.l = l;
let delta = Math.asin((lp * lp - ln * ln) / (4 * l * ya));
this.kiteState.eta -= (delta - kiteControl.delta);
kiteControl.delta = delta;
}
Для возможности настройки геймпада работа с Gamepad API реализована в модуле gamepad-input.js, который содержит класс GamepadInput. Класс GamepadInput предназначен для получения значений вертикальных осей аналоговых стиков и состояния кнопок геймпада с помощью свойств. Также класс GamepadInput позволяет настраивать индексы и направления вертикальных осей аналоговых стиков и индексы кнопок геймпада с помощью перемещения аналоговых стиков или нажатия кнопок. Настройки геймпада сохраняются в файлах браузера и загружаются при запуске программы.
4.3.5 Режим свободного полёта
В режиме свободного полёта возможно изменение скорости ветра и длины лееров.
Скорость ветра может быть выбрана из трёх значений:
- Light (слабый ветер, 7 м/с);
- Moderate (умеренный ветер, 8 м/с);
- Strong (сильный ветер, 9 м/с).
Значения скорости ветра определены в модуле wind.js в объекте Wind, который представляет перечисление.
Длина лееров может быть выбрана из трёх значений:
- Short (короткие лееры, 20 м);
- Medium (средние лееры, 22.5 м);
- Long (длинные лееры, 25 м).
Значения скорости ветра определены в модуле lines.js в объекте Lines, который представляет перечисление.
Скорость ветра и длина лееров ограничены предопределёнными значениями, чтобы обеспечить стабильность симуляции при разных настройках.
4.3.6 Режим обучения
В режиме обучения скорость ветра имеет значение Moderate, и длина лееров имеет значение Short.
Интерактивные уроки имеют название и задания. Для завершения урока необходимо выполнить все задания.
Класс Lesson, представляющий урок, определён в модуле lesson.js.
Задания имеют текст и требуемое положение воздушного змея. Для описания требуемого положения воздушного змея используются координаты, которые называются в программе координатами окна ветра (Wind Window Position).
Координатами окна ветра являются:
1) положение воздушного змея относительно центра окна ветра по горизонтали в градусах ;
2) положение воздушного змея относительно центра окна ветра по вертикали в градусах ;
3) угол поворота воздушного змея против часовой или по часовой стрелке ;
4) количество поворотов воздушного змея против часовой или по часовой стрелке .
Все координаты окна ветра определяются в заданиях с помощью интервалов кроме количества поворотов. Координаты окна ветра, которые не используются в заданиях, имеют значение null. Если в задании определены координаты окна ветра и , то отображается область, в которой должен находиться воздушный змей.
Координаты окна ветра для воздушного змея рассчитываются в классе KiteSimulation после обновления положения воздушного змея в трёхмерной сцене. Задание считается выполненным, если координаты окна ветра для воздушного змея соответствуют требуемому положению воздушного змея в задании.
Также задания имеют необязательный параметр, который показывает, должен ли воздушный змей совершить посадку.
Класс Objective, представляющий задание, определён в модуле objective.js.
В данный момент времени доступны следующие уроки:
1) Takeoff (взлёт);
2) Pull Turns (повороты с помощью натяжения лееров);
3) Push Turns (повороты с помощью ослабления лееров);
4) Combination Turns (повороты с помощью одновременного натяжения и ослабления лееров);
5) Wind Window (окно ветра);
6) Left Landing (посадка с левой стороны окна ветра);
7) Right Landing (посадка с правой стороны окна ветра);
8) Twisted Lines (перекрученные лееры);
9) Loops (петли);
10) Figure Eights (восьмёрки);
11) Low Passes (низкие пролёты).
Уроки определены в модуле lessons.js в массиве LESSONS.
...Подобные документы
Фурье и Данцига как основоположники методов математического программирования. Знакомство с теорией решения транспортных задач. Анализ способов применения симплекс-метода. Рассмотрение примера решения транспортной задачи в области электроэнергетики.
презентация [981,0 K], добавлен 28.04.2014Системы стабилизации летательного аппарата по углу тангажа с учетом независимости составляющих углового движения. Передаточные функции воздушного судна. Задание матрицы весовых коэффициентов функционала; расчет рулевого привода; синтез фильтра Калмана.
курсовая работа [309,7 K], добавлен 07.08.2013Знакомство с особенностями и основными этапами разработки онлайн-сервиса, облегчающего потребителям процесс подбора спортивного снаряжения. Анализ оборудования для вейкбординга. Общая характеристика клиент-серверной архитектуры реализации веб-приложения.
дипломная работа [4,1 M], добавлен 30.09.2016Особенности метода ветвей и границ как одного из распространенных методов решения целочисленных задач. Декомпозиция задачи линейного программирования в алгоритме метода ветвей и границ. Графический, симплекс-метод решения задач линейного программирования.
курсовая работа [4,0 M], добавлен 05.03.2012Транспортная задача как одна из самых распространенных специальных задач линейного программирования: понятие, основное назначение. Формальное описание метода минимального элемента. Характеристика этапов разработки алгоритма решения поставленной задачи.
курсовая работа [713,3 K], добавлен 19.10.2012Техническое задание на проектирование системы автоматизированного решения задач механики. Разработка комплекта математических моделей систем с распределенными параметрами при действии динамических нагрузок. Выбор базового программного обеспечения.
дипломная работа [679,7 K], добавлен 15.01.2010Разработка программы для моделирования работы парикмахерского салона в течение рабочего дня. Отладка и тестирование программного продукта, руководство пользователю. Сценарий диалога с пользователями. Основные переменные, константы и типы модуля.
курсовая работа [629,8 K], добавлен 22.01.2015Паскаль как язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля, история его разработки и функциональные особенности. Задача с использованием двумерного массива, составление блок-схемы решения.
контрольная работа [819,0 K], добавлен 12.03.2014Теоретические основы обучения 3d моделированию на основе практикума с использованием Autodesk. Роль 3D-моделирования в повышении эффективности учебного процесса. Основные принципы создания практикума по 3D-моделированию в программной среде Autodesk.
дипломная работа [1,2 M], добавлен 13.12.2017Решение прикладных задач с использованием искусственного интеллекта. Преимущества и недостатки экспертных систем по сравнению с использованием специалистов, области их применения. Представление знаний и моделирование отношений семантическими сетями.
реферат [260,9 K], добавлен 25.06.2015Знакомство с основными принципами построения Web-сайтов. Рассмотрение этапов создания простой страницы HTML. Анализ способов форматирования сайтов. Общая характеристика видов списков: маркированные, нумерованные. Особенности таблиц каскадных стилей.
курсовая работа [2,5 M], добавлен 18.07.2014Знакомство с возможностями перехвата пароля при аутентификации в почтовых системах. Характеристика почтовой программы "The Bat!", анализ способов настройки и проверки работоспособности. Рассмотрение распространенных методов защиты от перехвата пароля.
контрольная работа [1,1 M], добавлен 19.05.2014Ведение журнала событий системы безопасности Windows. Аудит успехов и аудит отказов. Работа диспетчера задач, методы его запуска. Утилита System Safety Monitor 2.0.6.566 как один из способов обнаружения процессов, запущенных в результате взлома.
лабораторная работа [905,4 K], добавлен 19.10.2014Бюджетирование как один из важных инструментов управления предприятием в условиях рыночной экономики, знакомство с основными целями. Особенности составления операционного бюджета в торговой организации при помощи программы Microsoft Office Excel.
курсовая работа [4,2 M], добавлен 19.10.2015Язык GPSS как один из наиболее эффективных и распространенных языков моделирования сложных дискретных систем. Транзакт - элемент системы массового обслуживания. Решение задач на основе моделирования с применением языка GPSS, создание имитационной модели.
курсовая работа [54,7 K], добавлен 25.11.2010Анализ метода линейного программирования для решения оптимизационных управленческих задач. Графический метод решения задачи линейного программирования. Проверка оптимального решения в среде MS Excel с использованием программной надстройки "Поиск решения".
курсовая работа [2,2 M], добавлен 29.05.2015Требование к антивирусным программам, их характеристика, классификация, обзор, преимущества и недостатки. Особенности использования программ-архиваторов. Основные виды принтеров и их характеристика. Этапы и схема подготовки и решения задач с помощью ЭВМ.
контрольная работа [65,6 K], добавлен 04.12.2010Packet Tracer как симулятор сети передачи данных, выпускаемый фирмой Cisco Systems, принцип его действия и функциональные особенности. Сущность и этапы процесса маршрутизации. Разработка топологии сети, ее настройка, правильность прохождения пакетов.
лабораторная работа [925,7 K], добавлен 23.06.2013Рассмотрение особенностей структурной и целостной частей реляционной модели базы данных, их функции. Знакомство с основными этапами разработки стратегии поддержания ссылочной целостности. Общая характеристика способов манипулирования реляционными данными.
курсовая работа [565,8 K], добавлен 25.04.2013Экспертные системы – интеллектуальные программы и устройства, использующие знания и процедуры рассуждения для решения задач, стоящих перед экспертом: назначение, свойства, преимущества использования, режимы работы; характеристики неформализованных задач.
презентация [132,5 K], добавлен 14.08.2013