Разработка и реализация программного модуля для трехмерной и двухмерной визуализации геометрических сборок для ПК BRAND
Геометрический модуль ПК BRAND. Основы метода Монте-Карло для решения уравнения переноса. Порядок построения траектории, модуль визуализации. Апробация на разных сборках, пользовательский интерфейс. Тестирование двухмерного и трехмерного режимов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 22.11.2015 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«Национальный исследовательский ядерный университет «МИФИ»
(ИАТЭ НИЯУ МИФИ)
Факультет естественных наук
Кафедра прикладной математики
Дипломная работа
"Разработка и реализация программного модуля для трехмерной и двухмерной визуализации геометрических сборок для ПК BRAND"
Студент: Сидорова О.О.
Руководитель: доцент, к.ф.-м.н. Царина А.Г.
Рецензент: доцент, к.т.н. Мирзеабасов О.А.
г. Обнинск, 2015
Содержание
перенос геометрический визуализация трехмерный
- Введение
- 1. Геометрический модуль ПК BRAND
- 1.1 Структура ПК BRAND
- 1.2 Основы метода Монте-Карло для решения уравнения переноса. Общие положения
- 1.3 Порядок построения траектории
- 1.4 Модуль визуализации
- 2. OpenGL
- 3. Апробация на разных сборках
- 3.1 Пользовательский интерфейс
- 3.2 Практическая часть. Двухмерный режим
- 3.2.1 Тестирование двухмерного режима
- 3.3 Практическая часть. Трехмерный режим
- 3.3.1 Тестирование трехмерного режима
- 3.4 Тестирование на реальных сборках
- Выводы
- Литература
- Приложение
Введение
Актуальность работы. В эффективности решения задач, связанных с радиационной и ядерной безопасностью, на одно из лидирующих мест по значимости выдвигаются методы численного эксперимента и прогнозирования. Этому способствует и быстрое развитие вычислительной техники, и усовершенствование алгоритмической базы, и развитие языков программирования, которые позволяют описывать сложные объекты и процессы их взаимодействия. Безусловно, как таковой натурный эксперимент не теряет своей важности и решающего значения, но теперь его проводят после всестороннего анализа, выполненного с помощью специализированных программных комплексов.
На текущий момент на рынке представлено достаточно большое количество разработок как отечественных, так и зарубежных ученых, направленных на моделирование процессов переноса излучения. Каждый программный комплекс имеет свою границу применимости и свою точность получаемых результатов и оценок. Среди наиболее известных можно перечислить такие продукты как MCU, MCNP, САПФИР, Microshield и т.д.
ПК BRAND, разработанный в ГНЦ ФЭИ и в ИАТЭ и названный в честь своих создателей П.А. Андросенко и А.А. Андросенко, составляет достойную конкуренцию указанным программам. Изначально комплекс предназначался для моделирования методом Монте-Карло исключительно нейтронно-физических экспериментов, но удачно выбранная структура разбиения на модули позволила очень быстро распространить BRAND на задачи расчета защиты от излучений, реакторные задачи, задачи радиационной медицины и другие, охватив моделирование совместного переноса нейтронов, фотонов и заряженных частиц. Комплекс также легко «переводится» и на решение краевых задач математической физики (алгоритмы блуждания по границе и по сетке). Его основное преимущество - это высокая точность получаемых оценок, широкий спектр решаемых задач переноса разного вида излучения, возможность сбора наиболее полной информации о моделируемом процессе. Основное развитие, таким образом, получили модули физических взаимодействий, а также модули детектора и источника. Для программного комплекса был разработан собственный язык построения сложных геометрических объектов, с помощью которого с высокой степенью детализации программируются сборки для расчетов.
Будучи мощным средством для проведения комплексных расчетов, в том числе и для решения задач ЯБ и РБ, ПК BRAND обладает одним существенным недостатком - в нем сложные геометрические объекты собираются вручную, без какого-либо визуального контроля, соответствующего современным стандартам. Без модуля визуализации нет возможности еще на этапе проектирования выявить ошибки, связанные с переводом на язык трехмерных геометрических объектов ПК BRAND чертежей, схем, конструкторской документации. Все данные для геометрического модуля собираются фактически вручную в текстовом файле, что диктуется средой разработки и сложилось исторически. Подобная схема сбора начальных данных в современных условиях является устаревшей, поэтому и была поставлена задача визуализации геометрических сборок. Это лишь начальный этап в процессе, который позволит в дальнейшем автоматизировать создание сложных конструкций.
Средства и методы выполнения работы. C# -- объектно-ориентированный язык программирования, один из наиболее динамично развивающихся в последнее десятилетие. Разработан в 1998--2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework. С# является удобным и эффективным инструментом для создания приложений со сложным пользовательским интерфейсом. Он имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Соответственно, этот язык обладает широкой палитрой объектов для проектирования программ, использования, создания и внедрения собственных компонентов и элементов управления. Более того C#-компилятор переводит исходный код программы в промежуточный язык под названием Intermediate Language (IL), а за превращение IL в последовательность машинных команд отвечает Just-In-Time-компилятор (JIT), который оптимизирует код, что повышает эффективность созданных алгоритмов. Оптимизации JIT-компилятора в основном предназначены для повышения производительности вычислительных приложений, но они оказывают положительное влияние и на другие типы приложений.
Для визуализации трехмерных объектов была выбрана графическая библиотека OpenGl, т.к. она обладает рядом преимуществ:
· различные функции доступны через расширения (для построения сложных трехмерных сцен и простых примитивов);
· простота написания кода;
· идеально подходит для визуализации результатов научных исследований;
· является «открытым стандартом».
Цель дипломной работы состоит в разработке и тестировании программного модуля для ПК BRAND, позволяющего строить двумерные и трехмерные изображения для сложных геометрических объектов для обеспечения контроля за качеством сборки конструкций.
Для достижения поставленной цели необходимо решить следующие задачи:
- изучить основы метода Монте-Карло и его применение для решения задач переноса излучения;
- создать библиотеку функций физмодуля ПК BRAND, соответствующих этапам моделирования траектории частицы, пролетающей через материал;
- адаптировать библиотеку для работы в среде программирования Visual Studio 2013 для кода на языке программирования C#;
- изучить библиотеки доступа к графическому интерфейсу OpenGL;
- разработать и реализовать алгоритм для двумерной визуализации изображения сечения плоскостями, параллельными координатным плоскостям;
- разработать и реализовать алгоритм трехмерной визуализации сборок;
- протестировать имеющиеся библиотеки сборок, провести расчет по одной из них.
1. Геометрический модуль ПК BRAND
ПК BRAND - программный комплекс для моделирования переноса излучения методом Монте-Карло. Как хорошо известно, отличительной чертой метода Монте-Карло является его приспособленность к решению многомерных задач в условиях реальной трёхмерной геометрии с подробным учётом всей имеющейся информации о взаимодействии излучения с веществом. Накопленные на сегодняшний день данные о характеристиках взаимодействия частиц различных типов с материалами настолько обширны, что просто сама работа с этими данными уже представляет собой весьма нетривиальную задачу. Требования же повышения точности расчетов диктуют необходимость использования самой современной информации, которая содержится в библиотеках файлов оценённых данных (отечественная BROND, зарубежные ENDF/B, JENDL, FENDL и другие). В сложившейся современной вычислительной практике файлы оцененных данных используются, как правило, после некоторой предварительной подготовки - процессинга, что к неопределенности исходных данных Д0 (см. рис. 1) может добавлять еще и технологические (ДTech) и константные (Д1) неопределенности, привносимые используемыми приближениями и упрощениями. Использование напрямую информации из файлов оцененных данных, наоборот не накапливает ошибку, хотя и приводит к увеличению времени счета. BRAND является программным комплексом с прямым (без процессинга) учетом данных, позволяющим выполнять реперные расчеты при исследовании процессов переноса нейтронов, фотонов и электронов во всем диапазоне энергий, который задан в библиотеках оцененных данных в формате ENDF-6.
1.1 Структура ПК BRAND
Архитектура комплекса позволяет включать в него программы моделирования случайных блужданий в многомерном пространстве с использованием аналогового и неаналогового моделирования. Блуждание частицы с точки зрения архитектуры пакета - это случайная последовательность абстрактных событий. Например, для задач переноса излучений: рождение частицы заданного типа внешним источником, столкновение, пролет между двумя точками столкновения, пересечение границ геометрической или регистрационной зоны (детектора), рождение вторичных частиц разных типов, гибель, изменение веса или вылет частицы из системы.
Конкретизация (т.е. физический смысл и алгоритмы реализации событий) осуществляются программами библиотеки модулей, которые являются основными смысловыми единицами пакета. Модуль в пакете - это набор подпрограмм, имеющих строго определенное архитектурой пакета функциональное назначение, и интерфейс. Все модули одинакового типа в пакете взаимозаменяемы, что обеспечивается его архитектурой.
Таким образом, архитектура монте-карловской программы естественным образом должна включать в себя следующие типы модулей:
У - управляющий модуль, обеспечивающий возможность решения задач в различной постановке, либо различными модификациями метода Монте-Карло;
П - модуль считывания и подготовки константной информации для расчета;
И - модуль источника, порождающий начальные фазовые координаты цепи Маркова;
М - модуль построения звена траектории цепи Маркова;
Г - геометрический модуль;
Д - модуль детектора (регистрации);
Н - модуль неаналогового моделирования;
О - модуль постобработки результатов расчета (возможно пустой).
Под рабочей программой (РП) BRAND понимается конкретный набор модулей из основных частей версии комплекса, объединяемых на уровне модулей загрузки или текстов:
РП = У + П + И + Г + Д + М + Н + О. (1)
В свою очередь модуль построения звена траектории цепи Маркова (М), который зачастую распадается на ряд самостоятельных модулей. Например, в задачах переноса излучений
М = Ф + Т,
где: Ф - модуль моделирования вектора направления после взаимодействия (физический модуль);
Т - модуль розыгрыша длины свободного пробега.
Такое разделение модуля построения звена траектории цепи Маркова является совершенно необходимым с точки зрения возможности использования неаналогового моделирования процессов. В задачах переноса излучений модуль Ф - это и есть константный модуль (КМ), а модуль Т - модуль построения длины участка траектории между двумя случайными столкновениями частицы.
В модуле визуализации необходимо подключение только двух из них - источника и геометрии.
Модуль источника. Под источником понимается объект в пространстве, с поверхности которого испускаются частицы, с плотностью f0 распределения в фазовом пространстве координат, направлений, энергий.
(2)
В общем случае запись p(A/B) означает условную плотность распределения переменной А в зависимости от значений переменной В. В частных случаях все указанные условные плотности могут задаваться и как безусловные. Плотности pЩ и pE должны быть заданы пользователем.
Моделирование траектории всегда начинается с определения ее начальных фазовых координат. Угловое распределение источника частиц может быть задано одним из следующих способов: мононаправленный источник частиц; изотропный источник частиц; косинусоидальное распределение направления вылетающих частиц с поверхности источника; дискретный набор направлений и соответствующий им набор вероятностей; кусочно-линейная аппроксимация угловой плотности распределения; угловое распределение вылетающих из источника частиц предполагается изотропным в круговом коническом телесном угле.
Энергетическое распределение источника частиц также может быть задано одним из вариантов распределения, например, моноэнергетический источник; энергетический спектр частиц источника представлен в виде гистограммы; в качестве энергетического распределения источника используется реакция синтеза с нормальным законом распределения и т.д. Всего в модуле представлено девять вариантов разыгрыша энергетической составляющей частиц, вылетающих из источника.
Еще одной характеристикой источника является его временное распределение. Соответственно, либо моделируется стационарная задача, либо источник частиц испускает их мгновенно, либо существует некоторый временной спектр, который задан некоторой функцией.
С точки зрения расположения в пространстве источник частиц может быть точечным или представлен некоторой трехмерной фигурой, соответствующей физическому прототипу. В качестве пространственного источника может быть задана любая геометрическая зона (или зоны) исследуемой системы, в объеме которой (которых) частицы рождаются по заданному распределению.
Можно с достаточной степенью уверенности утверждать, что все типы реальных физических источников входят в класс расчетных моделей источников, моделируемых с помощью предложенных алгоритмов в рамках ПК BRAND.
Геометрический модуль. Библиотека ПК BRAND содержит восемь геометрических специализированных модулей, каждый из которых приспособлен для оптимального выполнения задачи в определенной геометрии:
· цилиндрическая геометрия;
· сферическая геометрия;
· цилиндры в цилиндрах;
· трехмерная декартовая геометрия;
· цилиндры в эллипсоиде;
· конусы в сферах;
· конусно-цилиндрическая геометрия;
· три цилиндра.
И, наконец, девятым в библиотеку геометрических модулей входит модуль универсальной геометрии. Данный универсальный геометрический модуль позволяет решать любые пространственные задачи произвольной 3D-геометрии. В нем вся рассматриваемая геометрическая область разбита на однородные по составу геометрические объекты. Геометрический объект - некоторый пространственный объем, ограниченный несколькими поверхностями первого и/или второго порядка. Геометрические объекты могут пересекаться или включать в себя другие объекты. Единственное ограничение - самый большой геометрический объект (среда) должен включать в себя все остальные объекты.
Наиболее распространены случаи при формировании сборки согласно конструкторской документации, когда геометрический объект представляет собой одно из трех возможных пространственных тел: сфера, цилиндр, параллелепипед или некоторая их модификация.
Геометрические параметры объекта. При задании геометрических объектов необходимо ввести следующие четыре параметра, которые характеризуют положение объекта и его форму:
«Положение» - координаты центра объекта (x0, y0, z0);
«Углы поворота» - углы вокруг осей 0x, 0y, 0z (бx, бy, бz);
«Размеры» - диаметр D (сфера), диаметр D и высота H (цилиндр), три стороны a, b, c (параллелепипед),
«Толщина стенки»:
– сфера - один параметр, толщина стенки сферической оболочки дD;
– цилиндр - два параметра, толщина стенки цилиндрической оболочки дD и толщина дна дH;
– параллелепипед - три параметра, толщина стенок параллелепипеда дa, дb и толщина дна дс.
Модификации геометрических объектов определяются значением параметров «Толщина стенки».
Понятие поверхности. Принято, что каждая поверхность делит все пространство на две части: (+) пространство и (-) пространство. Тогда относительно данной поверхности каждая пространственная точка (x, y, z) характеризуется еще и некоторым признаком (знаком): (+1) - если точка принадлежит (+) пространству и (-1) - в противном случае. Для поверхностей первого порядка (плоскостей) под (+) пространством понимается множество пространственных точек, имеющих положительное отклонение от плоскости, (-) пространство - точки с отрицательным отклонением (напомним, что отклонение меньше нуля, если точка О(x, y, z) и точка О(0, 0, 0) лежат по одну сторону от плоскости). Для цилиндрических и сферических поверхностей, ограничивающих некоторый пространственный объем под (+) пространством понимается множество точек расположенных внутри цилиндрических/сферических поверхностей, (-) пространство - вне них.
Таблица 1. Способы задания геометрических объектов
№ п/п |
Модификации |
Способы задания |
||||
Положение |
Размеры |
Углы поворота |
Толщина стенки д |
|||
1 |
сфера |
координаты центра (x0, y0, z0) |
диаметр D |
не влияет на геометрические характеристики |
дD ? D/2 |
|
сферическая оболочка |
0 < дD < D/2 |
|||||
2 |
цилиндр |
координаты центра (x0, y0, z0); |
диаметр и высота цилиндра (D, H); |
вокруг осей 0x, 0y, 0z автоматически округляются до ближайшего кратного 90° |
дD ? D/2 |
|
цилиндрическая труба |
0 < дD < D/2, дH = 0 (дно) |
|||||
цилиндрическая труба с дном с одной стороны («цилиндрический стакан») |
0 < дD < D/2 0 < дH < H |
|||||
3 |
параллелепипед |
координаты центра (x0, y0, z0) |
длина, ширина и высота параллелепипеда (a, b, c) |
осей 0x, 0y, 0z |
дa ? a/2 , дb ? b/2 , дc ? c |
|
прямоугольная труба |
дc = 0 (при 0 < дa < a и 0 < дb < b) |
|||||
прямоугольная труба с дном с одной стороны («прямоугольный стакан») |
0 < дc < c 0 < дa < a 0 < дb < b) |
Под геометрической зоной понимается некоторый пространственный объем, ограниченный составляющими геометрическую систему поверхностями. Нумерация геометрических зон в каждом модуле своя. Под физической зоной понимается совокупность геометрических зон, состоящих из одинакового материала.
При задании исходной информации о каждой поверхности сначала указывается некоторое стандартное имя поверхности и затем уже индивидуальные исходные данные. Задаются поверхности либо уравнениями, либо характерными точками.
Задать геометрическую зону означает задать число ее границ (поверхностей) и указать для каждой граничной поверхности (+) или (-) пространство пересекается с объемом данной зоны. Пересечение геометрических зон недопустимо.
На настоящий момент в ПК BRAND реализованы следующие поверхности, для каждой из которых принято указанное ниже стандартное имя.
1. PLAN - плоскость, заданная уравнением A•x+B•y+C•z+D = 0. Под (+) пространством понимается множество пространственных точек, имеющих положительное отклонение от плоскости, (-) пространство - точки с отрицательным отклонением (отклонение меньше нуля, если точка (Х,Y,Z) и точка (0,0,0) лежат по одну сторону от плоскости).
2. SFER - сфера с заданным радиусом и центром. Объем внутри сферы - (+) пространство, снаружи - (-) пространство.
3. CIL - бесконечный круговой цилиндр заданного радиуса. Ось цилиндра параллельна одной из осей координат. Объем внутри цилиндра - (+) пространство, снаружи - (-) пространство.
4. KANON2 - поверхность задана уравнением A•(X-X0) 2 +B•(Y-Y0) 2 +C•(Z-Z0)2 = 0. Можно задавать смещенные относительно точки (0,0,0), но не повернутые относительно канонического вида, поверхности такие как эллипсоид, однополостной гиперболоид, двуполостной гиперболоид, эллиптический (или круговой ) конус, эллиптический (или круговой) цилиндр, гиперболический цилиндр. Для поверхностей, ограничивающих конечный пространственный объем, (+) пространство - внутри объема, что соответствует неравенству A(X-X0) 2 +B•(Y-Y0) 2 +C•(Z-Z0)2 < 0. Точки, лежащие снаружи конечного пространственного объема (т.е. при неравенстве в противоположную сторону ), относятся к (-) пространству.
5. РОV2 - поверхность задана уравнением: АХХ•x2 +АYY•y2 +АZZ•z2 +АХY•x•y +AХZ•x•z +АYZ•y•z+АХ•x +АY•y +АZ•z +А = 0. В (+) пространство отнесены точки, для которых АХХ•x2 +АYY•y2 +АZZ•z2 +АХY•x•y +AХZ•x•z +АYZ•y•z+АХ•x +АY•y +АZ•z +А < 0, в (-) пространство - остальные.
6. КUВ - параллелепипед с осями, параллельными осям координат. Внутренний объем - (+) пространство, снаружи - (-) пространство.
7. CIL2PL - ограниченный двумя плоскостями круговой цилиндр. Цилиндр параллелен одной из осей координат, а плоскости перпендикулярны этой оси. Внутренний объем - (+) пространство, снаружи - (-) пространство.
8. KON2PL - ограниченный двумя плоскостями круговой конус. Конус параллелен одной из осей координат, а плоскости перпендикулярны этой оси. Внутренний объем - (+) пространство, снаружи - (-) пространство.
9. TRUBA - две коаксиальные поверхности CIL2PL ( "кусок трубы" ). Кольцевой объем трубы - (+) пространство, наружное пространство и объем внутри меньшего цилиндра - (-) пространство.
10. PRIZMA - правильная призма, параллельная одной из осей координат.
1.2 Основы метода Монте-Карло для решения уравнения переноса. Общие положения
Метод Монте-Карло - это название для группы методов численного статистического моделирования. В основе метода лежит разработка вероятностной модели для некоторого процесса или объекта и определение на основе закона больших чисел средних характеристик для интересующих параметров. Соответственно, построенная модель «проживает» некоторую историю, многократное повторение которой и позволяет получать информацию. Дисперсия характеристик используется для определения ошибок, степени доверия к полученным оценкам.
В общем виде схема метода Монте-Карло можно представить следующим алгоритмом.
Требуется вычислить некоторую величину a, которая может быть как скаляром, так и вектором.
В качестве оценки искомой величины можно построить случайную величину о, математическое ожидание которой совпадает со значением a.
Из всех возможных вариантов построенных оценок {оi} выберем ту, у которой дисперсия будет наименьшей и алгоритм ее реализации на ЭВМ будет достаточно прост и эффективен.
Имея множество реализаций случайной величины о1, о2,… оN на основе закона больших чисел можем вычислить приближенное значение искомой величины
(3)
В основном среди величин, допускающих приведенное выше представление, рассматривают интеграл и линейный функционал , где f(x) - решение интегрального уравнения Фредгольма второго рода
Модель переноса частиц. В некоторой выпуклой области, которая заполнена неоднородным веществом, или на ее границе расположен источник излучения. Частицы, испускаемые этим источником, сталкиваются с частицами вещества и либо поглощаются ими, либо рассеиваются по некоторому случайному закону, заданному индикатрисой рассеивания g(r,Щ,Щ?), которая определяет направление дальнейшего движения частицы. Траектория заканчивается после поглощения или вылета из среды.
Такой процесс переноса частиц описывается интегральным уравнением
(4)
где f(x) - плотность столкновений частиц; К- ядро интегрального оператора переноса; f1(x) - плотность первых столкновений, определяемая источником фотонов Ф(x) и транспортной частью ядра К; x=(r, Щ,E) - точка фазового пространства; Щ =(u,v,w) -направляющие косинусы. При такой записи .
Метод Монте-Карло не может найти решение на всем фазовом пространстве, то есть восстановить вид функции f(x) в каждой точке, есть возможность оценить некоторый функционал от этого решения. То есть, ставится задача определения одной или нескольких характеристик процесса блуждания частиц: вероятность поглощения частицы в определенной области, вероятность попадания частицы в некоторую заданную область, которая является детектором и т.д.
Одним из способов численного решения поставленной задачи стоит в розыгрыше на компьютере траектории частицы, т.е. процесс переноса рассматривается как однородная цепь Маркова столкновения частиц с элементами вещества. Алгоритм, реализующий этот метод, называют аналоговым. Свободный пробег l частицы между двумя последовательными столкновениями распределен с плотностью
, (5)
где у(r,E) - полное сечение взаимодействия.
Гамма версия ПК BRAND позволяет методом Монте-Карло оценивать линейные функционалы от решения интегрального уравнения переноса фотонов (4) в фазовом пространстве координат x =(x,y,z), направлений Щ=(u,v,w) и энергий E. Набор оцениваемых линейных функционалов включает в себя практически все обычно представляющие интерес величины при решении задач защиты от излучений и моделировании ядерно-физических экспериментов
1.3 Порядок построения траектории
Считаем, что известна точка ОK(x0, y0, z0) из которой движется частица по лучу с направляющими косинусами (u, v, w) и номер геометрического объекта K, которому принадлежит точка ОK(x0, y0, z0). Всего геометрических объектов N (N ? K).
Алгоритм вычисления номеров пролетаемых зон (геометрических объектов) и отрезков луча по этим зонам следующий:
1) Принимаем k = 1, т.е. выбираем геометрический объект №1.
2) Для k-го геометрического объекта определяем минимальное расстояние Дlki > 0 от точки ОK(x0, y0, z0) по лучу (u, v, w) до каждой из поверхностей, образующих настоящий геометрический объект.
3) Находим координаты точки Оk(x, y, z) на поверхности k-го геометрического объекта
4) Проверяем принадлежность точки Оk(x, y, z) k-му геометрическому объекту, если точка Оk(x, y, z) не принадлежит объекту - принимаем Дlki = ?. Если имеем бесконечное множество точек Оk(x, y, z) принадлежащих объекту - принимаем Дlki = ?.
5) Повторяем процедуры 2 - 4 для k = k + 1 пока k <= K.
6) Находим Дl = min (Дlki), минимальное расстояние Дl из массива значений Дlki (k = 1…K).
7) Если k = K (вычисления п. 6) имеем i - номер поверхности, через которую частица вылетает из K-го геометрического объекта. В противном случае (k < K) имеем i - номер поверхности, через которую частица влетает в k-тый геометрический объект.
8) (k = K). Если k = N - переход на п. 10. В противном случае проверяем принадлежность точки Оk(x, y, z) k-му геометрическому объекту (для k = k + 1, K < k <= N) до тех пор пока точка Оk(x, y, z) не будет принадлежать k-му объекту.
9) (k < K). Присваиваем значения K = k, x0 = x, y0 = y, z0 = z. Переход на п. 1 алгоритма.
10) Окончание построения траектории.
1.4 Модуль визуализации
Непосредственно программный комплекс BRAND не позволяет строить изображения, т.к. ориентирован только на расчеты. Все сборки, которые должны быть проанализированы, сложно устроены и их описание и построение ведется, в основном, без автоматического ввода, что приводит к затруднению проверки расчетов. Поэтому возникла потребность в методике верификации для построения сборок. Была поставлена задача построить максимально информативные изображения, так чтобы оператор мог проверить их по всем сечениям (плоскостям параллельным XOY, XOZ, YOZ) и общий трехмерный вид моделей.
Визуализация строится на основе физических функций ПК BRAND переноса фотонов. Рассматривается перенос излучения без потери энергии и прямолинейный, то есть в точке рассеяния восстанавливаем исходное направление движения. Таким образом физический модуль фактически подменен упрощенной схемой замены розыгрыша угла рассеивания, на постоянное исходное значение источника. Порядок действий соответствует приведенному выше алгоритму построения траекторий и соответствует ( Рис. 2).
При двумерном построении пользователю предлагается выбрать секущую плоскость, «высоту» сечения, и размеры области просмотра. На левой границе области просмотра располагается источник, который состоит из точечных мононаправленных источников, каждый из которых соответствует пикселям отображения области прорисовки.
В трехмерной реализации пользователь задает размеры области (параллелепипеда), в которой будет проводиться построение объекта. Источником является одна из граней. Структура источника такая же, как и в предыдущем случае.
Такой подход осуществлен для того чтобы изображение строилось в том виде, который был бы «понятен» модулю расчетов, то есть физическому модулю. Это позволяет, с одной стороны, устранить все ошибки в сборе геометрии, которая является наиболее сложной частью исходных данных; с другой стороны, позволяет избежать очень трудоемкого перевода исходной геометрии BRAND на платформы современных трехмерных редакторов.
2. OpenGL
OpenGL является на данный момент одним из самых популярных программных интерфейсов (API) для разработки приложений в области двумерной и трехмерной графики. Стандарт OpenGL был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения, а его основой стала библиотека IRIS GL, разработанная Silicon Graphics.
OpenGL (Open Graphics Library -- открытая графическая библиотека, графический API) -- спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику. На базовом уровне, OpenGL -- это просто спецификация, то есть документ, описывающий набор функций и их точное поведение. Производители оборудования на основе этой спецификации создают реализации -- библиотеки функций, соответствующих набору функций спецификации. Реализация призвана эффективно использовать возможности оборудования. Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители должны пройти специфические тесты (conformance tests -- тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL-реализация. Таким образом, разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, оставив эффективную реализацию последних разработчикам аппаратного обеспечения.
OpenGL ориентируется на следующие две задачи:
l Скрыть сложности адаптации различных 3D-ускорителей, предоставляя разработчику единый API.
l Скрыть различия в возможностях аппаратных платформ, требуя реализации недостающей функциональности с помощью программной эмуляции.
Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:
l Стабильность. Дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением.
l Надежность и переносимость. Приложения, использующие OpenGL, гарантируют одинаковый визуальный результат вне зависимости от типа используемой операционной системы и организации отображения информации. Кроме того, эти приложения могут выполняться как на персональных компьютерах, так и на рабочих станциях и суперкомпьютерах.
l Легкость применения. Стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.
Основные возможности
? Набор базовых примитивов: точки, линии, многоугольники и т.п.
? Видовые и координатные преобразования
? Удаление невидимых линий и поверхностей (z-буфер)
? Использование сплайнов для построения линий и поверхностей
? Наложение текстуры и применение освещения
? Добавление специальных эффектов: тумана, изменение прозрачности, смешивание цветов (blending), устранение ступенчатости (anti-aliasing).
Основным принципом работы OpenGL является получение наборов векторных графических примитивов в виде точек, линий и многоугольников с последующей математической обработкой полученных данных и построением растровой картинки на экране и/или в памяти. Векторные трансформации и растеризация выполняются графическим конвейером (graphics pipeline), который по сути представляет собой дискретный автомат. Абсолютное большинство команд OpenGL попадают в одну из двух групп: либо они добавляют графические примитивы на вход в конвейер, либо конфигурируют конвейер на различное исполнение трансформаций.
OpenGL является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход). Это является основным отличием от дескрипторных подходов, когда вся сцена передается в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране. С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны -- даёт свободу внедрения различных инноваций. Существуют реализации OpenGL для разных платформ. Для этого были созданы библиотеки для отображения информации с помощью оконной подсистемы для операционных систем Windows и Unix (WGL и GLX соответственно), а также библиотеки GLAUX и GLUT, которые используются для создания так называемых консольных приложений.
С точки зрения архитектуры графическая система OpenGL является конвейером, состоящим из нескольких этапов обработки данных:
? Аппроксимация кривых и поверхностей
? Обработка вершин и сборка примитивов
? Растеризация и обработка фрагментов
? Операции над пикселями
? Подготовка текстуры
? Передача данных в буфер кадра
GL обрабатывает и выводит так называемые примитивы (primitive) с учетом некоторого числа выбранных режимов. Каждый примитив - это точка, отрезок, многоугольник и т.д. Каждый режим может быть изменен независимо от других. Определение примитивов, выбор режимов и другие операции описывается с помощью команд в форме вызовов процедур. Примитивы определяются набором из одной или более вершин (vertex). Вершина определяет точку, конец грани, угол многоугольника. С каждой вершиной ассоциируются некоторые данные (координаты, цвет, нормаль, текстурные координаты). В подавляющем большинстве случаев каждая вершина обрабатывается независимо от других.
Построение параллелепипедов при помощи OpenGl.
В качестве примитива для построения трехмерного объекта решено было взять параллелепипед, который визуализирует нейтронный луч, исходящий из указанной точки.
Gl.glBegin(Gl.GL_QUADS);
Gl.glVertex3d(V1.y, V1.z, V1.x); // (left)
Gl.glVertex3d(V1.y, V1.z, V2.x);
Gl.glVertex3d(V1.y, V2.z, V2.x);
Gl.glVertex3d(V1.y, V2.z, V1.x);
Gl.glVertex3d(V1.y, V2.z, V2.x); // (back)
Gl.glVertex3d(V1.y, V2.z, V1.x);
Gl.glVertex3d(V2.y, V2.z, V1.x);
Gl.glVertex3d(V2.y, V2.z, V2.x);
Gl.glVertex3d(V2.y, V2.z, V2.x); // (left)
Gl.glVertex3d(V2.y, V2.z, V1.x);
Gl.glVertex3d(V2.y, V1.z, V1.x);
Gl.glVertex3d(V2.y, V1.z, V2.x);
Gl.glVertex3d(V2.y, V1.z, V2.x); // (before)
Gl.glVertex3d(V2.y, V1.z, V1.x);
Gl.glVertex3d(V1.y, V1.z, V1.x);
Gl.glVertex3d(V1.y, V1.z, V2.x);
Gl.glVertex3d(V1.y, V1.z, V2.x); // (up)
Gl.glVertex3d(V1.y, V2.z, V2.x);
Gl.glVertex3d(V2.y, V2.z, V2.x);
Gl.glVertex3d(V2.y, V1.z, V2.x);
Gl.glVertex3d(V1.y, V1.z, V1.x); // (down)
Gl.glVertex3d(V1.y, V2.z, V1.x);
Gl.glVertex3d(V2.y, V2.z, V1.x);
Gl.glVertex3d(V2.y, V1.z, V1.x);
Gl.glEnd();
Tao Framework - это свободно-распространяемая библиотека, с открытым исходным кодом, предназначенная для быстрой и удобной разработки кросс-платформенного мультимедийного программного обеспечения в среде .NET Framewrok и Mono. Tao Framework - это один из удобных путей для использования библиотеки OpenGL при разработке в среде .NET на языке C#.
В состав библиотеки входят современные средства, которые могут понадобиться в ходе разработки мультимедиа программного обеспечения: реализация библиотеки OpenGL, реализация библиотеки FreeGlut, содержащей современные функции этой библиотеки, библиотека DevIL (легшая в основу стандарта OpenIL - Open Image Library), и многие другие.
Самые интересные библиотеки, включенные в Tao Framework:
OpenGL 2.1.0.12 - свободно распространяемый аппаратно-программный интерфейс для визуализации 2D и 3D графики.
FreeGLUT 2.4.0.2 - библиотека с открытым исходным кодом, являющаяся альтернативой библиотеке GLUT (OpenGL Utility Toolkit).
DevIL 1.6.8.3 (она же OpenIL) - кроссплатформенная библиотека, реализующая программный интерфейс для работы с изображениями. На данный момент библиотека поддвержвивает работу с изображениями 43-х форматов для чтения и17-ти форматов для записи.
Cg 2.0.0.0 - язык высокого уровня, созданный для программирования текстурных и вершинных шейдеров.OpenAL 1.1.0.1 - свободно распространяемый аппаратно-программный интерфейс для обработки аудиоданных. (В том числе 3D звука и EAX эффектов).
PhysFS 1.0.1.2 - библиотека для работы с вводом / выводом файловой системы, а так же различного вида архивами, на основе собственного API.
SDL 1.2.13.0 - кроссплатформенная мультимедийная библиотека, активно использующаяся для написания мультемедийных приложений в операционной системе
GNU/Linux ODE 0.9.0.0 - свободно распространяемый физический прграммный интерфейс, главной особенностью которого является реализация системы динамики абсолютно твёрдого тела и системаобнаружения столкновений.
FreeType 2.3.5.0 - библиотека реализующая растеризацию шрифтов. Данная библиотека используется в X11(оконной системе, которая обеспечивает все стандартные инструменты и протоколы для построения GUI (графического интерфейса пользователя) в UNIX подобных операционных системах).
FFmpeg 0.4.9.0 - набор свободно-распространяемых библиотек с открытым исходным кодом. Данные мультимедийные библиотеки позволяют работать аудио и видео данными в различных форматах.
Библиотека Tao Framework является мощным свободно-распространяемым инструментом, для решения любых мультимедийных задач, преимущественно кросс-платформенного характера.
Для создания приложения были использованы следующие библиотеки:
l OpenGL - для визуализации трехмерных объектов
l FreeGLUT - для создания окон, а также взаимодействия с мышью, клавиатурой и прорисовки геометрических примитивов.
l Windos.Platform - для работы с элементом управления SimpleOpenGLControl, в котором происходит прорисовка всех объектов
В ходе работы были изучены следующие темы:
Источники света в OpenGl. OpenGL дает разработчику более широкие, по отношению к физическому миру, возможности для настройки освещения. Если стоит цель создать как можно более реалистичное изображение, то эти возможности нужно использовать весьма аккуратно. В реальном мире любой источник света имеет спектр, который характеризует, свет в каком диапазоне длин волн излучает этот источник. Точно так же материал по-разному отражает/преломляет/поглощает свет с различной длиной волны. В модели освещения OpenGL все идентично, за той лишь разницей, что можно задавать степень отражения для красной, зеленой и синей компонент составляющих освещенности. В большинстве случаев источники света излучают белый свет различной интенсивности, а результирующий цвет в большей степени определяется свойствами материала. Фоновые компоненты подбираются таким образом, чтобы вклад фоновой освещенности был невелик. Большую часть результирующей освещенности вносит рассеянная составляющая.
Освещение любого объекта зависит от двух факторов. Первый - это материал, из которого сделан объект. Второй - это свет, которым он освещен.
После того, как задана необходимая геометрия (нормали) необходимо разместить на сцене один или несколько источников света, настроить их свойства и включить их. По умолчанию освещение отключено. Включается оно командой glEnable(GL_LIGHTING). В зависимости от реализации OpenGL на сцене могут присутствовать восемь и более источников света. Включить нулевой источник света можно командой:
glEnable(GL_LIGHT0);
Остальные включаются аналогичным способом, где вместо GL_LIGHT0 указывается GL_LIGHTi. После того, как источник включен, необходимо задать его параметры. В OpenGL существует три типа источников света:
l источник направленного света: расположен в бесконечности и имеет выделенное направление освещения.
l точечный источник света: расположен в конкретной точке пространства и светит равномерно во всех направлениях. Для него можно задать эффект затухания света с расстоянием.
l прожектор: является частным случаем точечного источника, но свет от него распространяется только внутри ограничивающего конуса, а не по всем направлениям.
Для управления свойствами источника света используются команды glLight*:
glLightf(GLenum light, GLenum pname, GLfloat param);
glLightfv(GLenum light, GLenum pname, const GLfloat *param);
Параметр light указывает OpenGL для какого источника света задаются параметры. Команда glLightf используется для задания скалярных параметров, а glLightfv используется для задания векторных характеристик источников света.
Для источника света можно задать фоновую, рассеянную и зеркальную компоненты излучения.
Параметр pname команды glLightfv:
GL_AMBIENT - цвет фонового излучения источника света
GL_DIFFUSE - цвет рассеянного излучения источника света (значение по умолчанию для
GL_LIGHT0 - белый, для остальных - черный)
GL_SPECULAR - цвет зеркального излучения источника света (значение по умолчанию для
GL_LIGHT0 - белый, для остальных - черный)
Источники направленного света. Источника света такого типа находится в бесконечности и свет от него распространяется в заданном направлении. Идеально подходит для создания равномерного освещения. Хорошим примером источника направленного света может служить Солнце. У источника направленного света, кроме компонент излучения, можно задать только направление.
Параметр pname команды glLightfv:
GL_POSITION - (x, y, z, w) направление источника направленного света. Первые три компоненты (x, y, z) задают вектор направления, а компонента w всегда равна нулю.
Точечные источники света. Точечный источник света расположен в некоторой точке пространства и излучает во всех направлениях. Т.к. расстояние между источником и освещаемой точкой конечно, то можно задать закон убывания интенсивности излучения с расстоянием. Стандартные средства OpenGL позволяют задавать такой закон в виде обратно-квадратичной функции от расстояния:
(6)
Т.о. для точечного источника света, кроме свойств излучения, можно задать ещё четыре параметра:
GL_POSITION - позиция источника света (по умолчанию источник света направленный)
GL_CONSTANT_ATTENUATION - постоянная k_const в функции затухания f(d)
GL_LINEAR_ATTENUATION - коэффициент k_linear при линейном члене в функции затухания f(d)
GL_QUADRATIC_ATTENUATION - коэффициент k_quadratic при квадрате расстояния в функции затухания f(d)
Прожекторы. Одной из разновидностей точечного источника является прожектор. Для него применимы все параметры, что и для точечного источника, но кроме того прожектор позволяет ограничить распространение света конусом. Для этого конуса можно задать коэффициент убывания интенсивности, в зависимости от угла между осью конуса и лучом распространения света.
Параметр pname команды glLightfv
GL_SPOT_DIRECTION - (x, y, z) - направление прожектора (ось ограничивающего конуса
GL_SPOT_CUTOFF - угол между осью и стороной конуса (он же половина угла при вершине)
GL_SPOT_EXPONENT- экспонента убывания интенсивности
Прожектор
Прожектор, включен расчет убывания интенсивности для прожектора
В своей работе я использовала направленный источник света для освещения сцены.
Материал. При построение трехмерных объектов я использовала материалы, которые являются частью функции освещения . Для любого объекта на сцене можно определить свойства материала отражать различные компоненты освещения: фоновую, рассеянную и зеркальную. Это можно сделать командой:
glMaterialfv(GLenum face, GLenum pname, const GLfloat *params);
Параметр face команды glMaterialfv:
GL_FRONT - Свойства задаются для лицевой стороны поверхности.
GL_BACK - Свойства задаются для тыльной стороны поверхности.
GL_FRONT_AND_BACK - Свойства задаются для обеих сторон поверхности.
Параметр pname задает, какое свойство материала передается через params.
Параметр pname команды glMaterialfv:
GL_AMBIENT - цвет фонового отражения материала
GL_DIFFUSE - цвет рассеянного отражения материала
GL_SPECULAR - цвет зеркального отражения материала
GL_EMISSION - цвет собственного излучения материала
GL_SHININESS - степень в формуле зеркального отражения (коэффициент блеска). Допускаются значения в интервале.
GL_AMBIENT_AND_DIFFUSE - цвет фонового и рассеянного отражения материала
Params содержит указатель на массив из четырех чисел соответствующего типа (или одного для GL_SHININESS). Отсечения здесь не происходит и в расчете освещенности эти значения участвуют как есть. Для установки коэффициента блеска можно использовать команду:
glMaterialf(GLenum face, GL_SHININESS, GLfloat shininess);
3. Апробация на разных сборках
Так как ПК BRAND является расчетным комплексом, написанным на языке Fortran и сложный геометрический блок, позволяющий делать расчеты для трехмерных геометрических конструкций, собирается фактически вручную в текстовом файле, все конструкции необходимо визуализировать, дать возможность пользователю посмотреть на ту конструкцию, которую он собрал. Построение изображений ведется по той же схеме, что и расчет в ПК BRAND, что позволяет также проверить и правильность считывания исходных данных в программном комплексе, исключая, таким образом, возможные ошибки в геометрической части.
Для того, чтобы достичь единообразия в восприятии входных данных, как в разрабатываемой программе, так и в самом ПК BRAND необходимо разработать библиотеку функций имитирующих работу физической части основной программы и ее геометрического модуля.
Библиотека написана на языке FORTRAN и включает в себя функции, которые дают всю необходимую информацию для визуализации сборки: координаты, материал, размеры областей и зон, список используемых материала и т.д.
Функция vlet написана таким образом, что она моделирует прохождение частицы через материал с запретом соударений в нем (Рис. 4). Таким образом, в результате сквозного пролета одной частицы можно получить следующие данные:
1. попала ли частица в хотя бы одну из зон сборки
2. если да, то через сколько зон она пролетела
3. какие материалы заполняют каждую из зон
4. длину следа частицы в каждой из зон.
Так как траектория движения частицы является лучом, то на нем, соответственно, можно отложить те отрезки, которые соответствуют пути через каждую зону. Таким образом, становится известной внутренняя структура сборки. Далее предполагаем, что такие частицы испускаются некоторым источником на плоскости, которая параллельна одной из координатных плоскостей в направлении сборки. Каждый из налетающих объектов обладает определенным размером d и рассматриваем пройденный в материале путь как параллелепипед, для трехмерного режима, и как отрезок, двухмерного режима, с длиной равной длине пути l в данной зоне и шириной и высотой, равными d.
Подобные документы
Основы метода Монте-Карло и его применение. Разработка и тестирование программного модуля для ПК BRAND, позволяющего строить двумерные и трехмерные изображения для сложных геометрических объектов для обеспечения контроля за качеством сборки конструкций.
дипломная работа [5,2 M], добавлен 10.10.2015Особенности разработки и реализации модулей двухмерной и трехмерной визуализации. Основные задачи трехмерного модуля управления. Анализ функций модуля управления ParamColorDrawer. Характерные особенности схемы функционирования программного средства.
реферат [2,2 M], добавлен 07.03.2012Освоение методов манипуляции параметрами SVG изображений при помощи JavaScript и возможности по анимации в современных браузерах. Интерфейс и структура модуля визуализации данных. Определение аномальных данных и их определение, реализованные типы.
курсовая работа [1,7 M], добавлен 20.05.2014Создание приложения, которое на вход получает компьютерную структуру, обрабатывает ее и выводит на экран. Краткое описание используемых пространств имен и классов. Файлы программного модуля Beta. Пример его работы, порядок подключения к Веб-странице.
дипломная работа [1,3 M], добавлен 06.07.2015Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Разработка графического интерфейса проекта (панель инструментов имеет 6 кнопок). Процедуры разделов программы: документа ThisDocument, программного модуля Module1 и пользовательских форм UserForm1, UserForm2 и Деление_амёбы. Тестирование программы.
курсовая работа [29,5 K], добавлен 14.12.2010Характеристика основных методов для решения различных задач с помощью случайных последовательностей. Реализация и проверка эффективности метода Монте-Карло при его применении на различных примерах. Алгоритм метода имитации. Издержки неопределенности.
курсовая работа [98,9 K], добавлен 04.05.2014Разработка структурной диаграммы программного модуля. Представление схемы для основных расчетов выбранного приложения для создания прямоугольной матрицы. Особенности создания пользовательского интерфейса. Тестирование и отладка спроектированного модуля.
курсовая работа [648,4 K], добавлен 27.05.2015Разработка функциональной и структурной схемы программного средства. Реализация основного модуля программы. Реализация модуля печати и модуля обновлений. Изучение взаимодействия информационных технологий, методов их интеграции и обмена данными.
дипломная работа [3,2 M], добавлен 27.10.2017