Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по практике.docx
Скачиваний:
70
Добавлен:
26.03.2015
Размер:
40.75 Кб
Скачать

Техническое задание

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

Чтобы это учесть, мы, используя для наших машин чертежи из КБ, а для загранки - все, что имелось у разведосов, задавали броню как совокупность элементов в пространстве. Каждый элемент – треугольник или четырехугольник, точки которого имели координаты по X, Y, Z (X - по направлению движения, Y- на левый борт, Z – в небеса). Элемент выбирался так, чтобы он был плоским, а по всей его поверхности броня была равнопрочной.

При запуске эта программа просит имя файла бронирования, значения угла обстрела (между вектором скорости и проекцией траектории снаряда на плоскость XOY), угла падения снаряда и его бронепробиваемости (три числа в зависимости от угла встречи с броней).

Файлы результатов имеют жестко забитые имена и содержат:

Файл

Содержание

K

  • угол обстрела и угол падения снаряда;

  • номера и координаты элементов, доступных для обстрела при этих углах;

  • площадь каждого элемента, доступного для обстрела при этих углах;

  • запас бронестойкости каждого элемента;

  • площадь проекции машины при заданных углах и поражаемая площадь.

TU

  • угол обстрела и угол падения снаряда;

  • номера элементов, доступных для обстрела при этих углах;

  • углы наклона, подворота, встречи снаряда с броней;

  • толщина брони по нормали и защищающая.

Pl_Nal

  • номера и координаты неплоских элементов;

  • угол обстрела и угол падения снаряда;

  • номера и координаты налагающихся (перекрывающих друг друга) элементов и их координаты на картинной плоскости;

  • координаты взаимно перекрывающихся поверхностей на картинной плоскости.

Чего бы хотелось иметь:

-общий вид машины с обозначением границ элементов и их заливкой зеленым цветом;

-по команде изменять цвета заливки в зависимости от стойкости брони и ошибок в задании:

-непробиваемые элементы (положительный запас бронестойкости) – зеленые;

-пробиваемые (отрицательный запас бронестойкости) - в оттенках красного, от розового до кумачового, в зависимости от модуля запаса бронестойкости.

-неплоские элементы – желтая заливка;

-области наложения элементов – синие.

Если в броне есть дыры (элементы не сопряжены), они должны иметь цвет фона рисунка, наверное, черные.

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

Необходимо предусмотреть Zoom в любом режиме работы.

Задание необходимо реализовать с использованием языка программирования С++ и графической библиотеки OpenGL.

ЯЗЫК С++

C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline- подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.

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