Отправьте статью сегодня! Журнал выйдет ..., печатный экземпляр отправим ...
Опубликовать статью

Молодой учёный

Проблематика разработки системы моделирования двигателя внутреннего сгорания на языке программирования C++

Информационные технологии
27.11.2022
96
Поделиться
Библиографическое описание
Заболотский, И. А. Проблематика разработки системы моделирования двигателя внутреннего сгорания на языке программирования C++ / И. А. Заболотский. — Текст : непосредственный // Молодой ученый. — 2022. — № 47 (442). — С. 11-13. — URL: https://moluch.ru/archive/442/96862/.


В статье описана проблематика разработки системы моделирования двигателя внутреннего сгорания.

Ключевые слова: двигатель внутреннего сгорания, разработка системы моделирования, программирование, C++.

При разработке крупных программ могут возникать различные трудности, связанные с тем, что элементы могут быть разработаны по отдельности, и в каждом из них нужно разобраться по отдельности, но не всегда удается предусмотреть процесс работы программы заранее, в следствии чего при работе могут возникать ошибки, и не только те, которые не позволяют скомпилировать программу, но и недоработки программы, влияющие на достоверность получаемых значений. Подобные проблемы встречались и при разработке системы моделирования двигателя внутреннего сгорания(ДВС) [2] и они были решены.

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

Для разработки программы был выбран язык C++, так как он имеет высокую производительность среди высокоуровневых языков программирования, также C++ довольно распространенный язык, ведь он используется во многих популярных игровых двигателях, а также для этого языка существует множество библиотек и множество уроков [7].

Для вывода трехмерной графики был выбран OpenGL, так как эта библиотека кроссплатформенная и использует высокоуровневые методы.

Скриншот с неправильной цветовой гаммой скриншота

Рис. 1 Скриншот с неправильной цветовой гаммой скриншота

Была добавлена opensource библиотека Freeimage, чтобы добавить возможность сохранять скриншоты программы, при её использовании возникла проблема — синий цвет, менялся местами с красным, в следствии чего окно вывода имело неправильную цветовую гамму (Рис.1). Проблема заключалась в том, что Freeimage использует не цветовую модель RGB(Red, Green, Blue), а BGR(Blue, Green, Red) (Рис.2), поменяв синий и красный цвет местами, скриншоты стали сохраняться с правильными цветами — какой программу видит пользователь во время её работы (Рис.3).

функция, отвечающая за создание скриншота программы. Выделена цветовая модель

Рис. 2 функция, отвечающая за создание скриншота программы. Выделена цветовая модель

Скриншот с правильной цветовой гаммой скриншота

Рис. 3 Скриншот с правильной цветовой гаммой скриншота

Во время разработки программы появлялась ошибка, что imgui выводил значение 0 в количестве оборотов, при том что оно было больше нуля, баг был решен тем, что imgui не умеет сам конвертировать переменные из одного типа в другое (из float в int), программа скомпилируется, но значение вывода будет неверным. Проблема была решена тем, что переменная float была изменена на int, так как можно обойтись без дробной части и imgui стал выводить правильное значение оборотов.

Также была задача добавить возможность менять цвет модели двигателя, для этого необходимо было разобраться в языке шейдеров GLSL. Шейдер — программа, описывающая каким образом будет отображаться трехмерная модель на экране. И стояла непростая задача, передать переменную цвета из C++ кода в GLSL код. Перепробовав множество OpenGL методов, были найдены те, которые позволили передать значения переменных из основной программы в шейдер (Рис.4).

Методы OpenGL, передающие переменные из C++ кода в шейдер

Рис. 4. Методы OpenGL, передающие переменные из C++ кода в шейдер

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

Литература:

1. Палагута К. А., Тройков С. М. Полунатурное моделирование электронной системы управления двигателем внутреннего сгорания (ЭСУ ДВС). Надежность и качество: труды международного симпозиума, 2010.

  1. Заболотский, И. А. Разработка системы моделирования двигателя внутреннего сгорания в рабочем режиме / Молодой ученый. — 2022. — № 46 (441).

3. Луканин. В. Н. Том 1. Двигатели внутреннего сгорания. Теория рабочих процессов, 2005.

4. Луканин. В. Н. Том 3. Компьютерный практикум. Моделирование процессов в ДВС, 2005.

5. Боресков. А. В. Программирование компьютерной графики, 2019.

6. Гришин Ю. А., Хазов Н. В. Моделирование газодинамических течений во впускных системах двигателей внутреннего сгорания, 2008.

  1. Johnson Bruce. Professional Visual Studio 2017. John Wiley & Sons, Inc., 2018.
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
двигатель внутреннего сгорания
разработка системы моделирования
программирование
C++
Молодой учёный №47 (442) ноябрь 2022 г.
Скачать часть журнала с этой статьей(стр. 11-13):
Часть 1 (стр. 1-71)
Расположение в файле:
стр. 1стр. 11-13стр. 71

Молодой учёный