В качестве оценки искомой величины можно построить случайную величину ξ, математическое ожидание которой совпадает со значением 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. Набор оцениваемых линейных
функционалов включает в себя практически все обычно представляющие интерес
величины при решении задач защиты от излучений и моделировании
ядерно-физических экспериментов
Считаем,
что известна точка О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-го
геометрического объекта
Проверяем принадлежность точки Оk(x,
y, z) k-му геометрическому объекту, если точка Оk(x,
y, z) не принадлежит объекту - принимаем Δlki = . Если имеем бесконечное множество точек Оk(x,
y, z) принадлежащих объекту - принимаем Δlki = .
) Повторяем процедуры 2 - 4 для k = k + 1 пока k <= K.
) Находим Δl = min (Δlki), минимальное расстояние Δl из массива значений Δlki (k = 1…K).
) Если k = K (вычисления п. 6) имеем i - номер поверхности, через которую частица вылетает из K-го геометрического объекта. В противном случае (k < K) имеем i - номер поверхности, через которую частица влетает в k-тый геометрический объект.
) (k = K). Если k = N - переход на п. 10. В противном случае проверяем принадлежность точки Оk(x, y, z) k-му геометрическому объекту (для k = k + 1, K < k <= N) до тех пор пока точка Оk(x, y, z) не будет принадлежать k-му объекту.
) (k < K). Присваиваем значения K = k, x0 = x, y0 = y, z0 = z. Переход на п. 1 алгоритма.
) Окончание
построения траектории.
Непосредственно программный комплекс BRAND не позволяет строить изображения, т.к. ориентирован только на расчеты. Все сборки, которые должны быть проанализированы, сложно устроены и их описание и построение ведется, в основном, без автоматического ввода, что приводит к затруднению проверки расчетов. Поэтому возникла потребность в методике верификации для построения сборок. Была поставлена задача построить максимально информативные изображения, так чтобы оператор мог проверить их по всем сечениям (плоскостям параллельным XOY, XOZ, YOZ) и общий трехмерный вид моделей.
Визуализация строится на основе физических функций ПК BRAND переноса фотонов. Рассматривается перенос излучения без потери энергии и прямолинейный, то есть в точке рассеяния восстанавливаем исходное направление движения. Таким образом физический модуль фактически подменен упрощенной схемой замены розыгрыша угла рассеивания, на постоянное исходное значение источника. Порядок действий соответствует приведенному выше алгоритму построения траекторий и соответствует ( Рис. 2).
При двумерном построении пользователю предлагается выбрать секущую плоскость, «высоту» сечения, и размеры области просмотра. На левой границе области просмотра располагается источник, который состоит из точечных мононаправленных источников, каждый из которых соответствует пикселям отображения области прорисовки (Рис. 2).
В трехмерной реализации пользователь задает размеры области (параллелепипеда), в которой будет проводиться построение объекта. Источником является одна из граней. Структура источника такая же, как и в предыдущем случае.
Такой подход осуществлен для того чтобы изображение строилось в том виде,
который был бы «понятен» модулю расчетов, то есть физическому модулю. Это
позволяет, с одной стороны, устранить все ошибки в сборе геометрии, которая
является наиболее сложной частью исходных данных; с другой стороны, позволяет
избежать очень трудоемкого перевода исходной геометрии BRAND на платформы современных трехмерных редакторов.
является на данный момент одним из самых популярных программных интерфейсов (API) для разработки приложений в области двумерной и трехмерной графики. Стандарт OpenGL был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения, а его основой стала библиотека IRIS GL, разработанная Silicon Graphics.
OpenGL (Open Graphics Library - открытая графическая библиотека, графический API) - спецификация, определяющая независимый от языка программирования <https://ru.wikipedia.org/wiki/Язык_программирования> платформонезависимый программный интерфейс <https://ru.wikipedia.org/wiki/API> для написания приложений, использующих двумерную и трёхмерную компьютерную графику <https://ru.wikipedia.org/wiki/Компьютерная_графика>. На базовом уровне, OpenGL - это просто спецификация, то есть документ, описывающий набор функций и их точное поведение. Производители оборудования на основе этой спецификации создают реализации - библиотеки функций, соответствующих набору функций спецификации. Реализация призвана эффективно использовать возможности оборудования. Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители должны пройти специфические тесты (conformance tests - тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL-реализация. Таким образом, разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, оставив эффективную реализацию последних разработчикам аппаратного обеспечения.ориентируется на следующие две задачи:
l Скрыть сложности адаптации различных 3D-ускорителей, предоставляя разработчику единый API <https://ru.wikipedia.org/wiki/API>.
l Скрыть различия в возможностях аппаратных платформ, требуя реализации недостающей функциональности с помощью программной эмуляции.
Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:
l Стабильность. Дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением.
l Надежность и переносимость. Приложения, использующие OpenGL, гарантируют одинаковый визуальный результат вне зависимости от типа используемой операционной системы и организации отображения информации. Кроме того, эти приложения могут выполняться как на персональных компьютерах, так и на рабочих станциях и суперкомпьютерах.
l Легкость применения. Стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.
Основные возможности
● Набор базовых примитивов: точки, линии, многоугольники и т.п.
● Видовые и координатные преобразования
● Удаление невидимых линий и поверхностей (z-буфер)
● Использование сплайнов для построения линий и поверхностей
● Наложение текстуры и применение освещения
● Добавление специальных эффектов: тумана, изменение прозрачности, смешивание цветов (blending), устранение ступенчатости (anti-aliasing).
Основным принципом работы OpenGL является получение наборов векторных графических примитивов в виде точек, линий и многоугольников с последующей математической обработкой полученных данных и построением растровой картинки на экране и/или в памяти. Векторные трансформации и растеризация выполняются графическим конвейером (graphics pipeline), который по сути представляет собой дискретный автомат <https://ru.wikipedia.org/wiki/Теория_автоматов>. Абсолютное большинство команд OpenGL попадают в одну из двух групп: либо они добавляют графические примитивы на вход в конвейер, либо конфигурируют конвейер на различное исполнение трансформаций.является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход). Это является основным отличием от дескрипторных подходов, когда вся сцена передается в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране. С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны - даёт свободу внедрения различных инноваций. Существуют реализации OpenGL для разных платформ. Для этого были созданы библиотеки для отображения информации с помощью оконной подсистемы для операционных систем Windows и Unix (WGL и GLX соответственно), а также библиотеки GLAUX и GLUT, которые используются для создания так называемых консольных приложений.
С точки зрения архитектуры графическая система OpenGL является конвейером, состоящим из нескольких этапов обработки данных:
● Аппроксимация кривых и поверхностей
● Обработка вершин и сборка примитивов
● Растеризация и обработка фрагментов
● Операции над пикселями
● Подготовка текстуры
● Передача данных в буфер кадраобрабатывает и выводит так называемые примитивы (primitive) с учетом некоторого числа выбранных режимов. Каждый примитив - это точка, отрезок, многоугольник и т.д. Каждый режим может быть изменен независимо от других. Определение примитивов, выбор режимов и другие операции описывается с помощью команд в форме вызовов процедур. Примитивы определяются набором из одной или более вершин (vertex). Вершина определяет точку, конец грани, угол многоугольника. С каждой вершиной ассоциируются некоторые данные (координаты, цвет, нормаль, текстурные координаты). В подавляющем большинстве случаев каждая вершина обрабатывается независимо от других.
Построение параллелепипедов при помощи OpenGl.
В качестве примитива для построения трехмерного объекта решено было взять параллелепипед, который визуализирует нейтронный луч, исходящий из указанной точки.
Gl.glBegin(Gl.GL_QUADS);.glVertex3d(V1.y, V1.z, V1.x); // (left).glVertex3d(V1.y, V1.z, V2.x);.glVertex3d(V1.y, V2.z, V2.x);.glVertex3d(V1.y, V2.z, V1.x);.glVertex3d(V1.y, V2.z, V2.x); // (back).glVertex3d(V1.y, V2.z, V1.x);.glVertex3d(V2.y, V2.z, V1.x);.glVertex3d(V2.y, V2.z, V2.x);.glVertex3d(V2.y, V2.z, V2.x); // (left).glVertex3d(V2.y, V2.z, V1.x);.glVertex3d(V2.y, V1.z, V1.x);.glVertex3d(V2.y, V1.z, V2.x);.glVertex3d(V2.y, V1.z, V2.x); // (before).glVertex3d(V2.y, V1.z, V1.x);.glVertex3d(V1.y, V1.z, V1.x);.glVertex3d(V1.y, V1.z, V2.x);.glVertex3d(V1.y, V1.z, V2.x); // (up).glVertex3d(V1.y, V2.z, V2.x);.glVertex3d(V2.y, V2.z, V2.x);.glVertex3d(V2.y, V1.z, V2.x);.glVertex3d(V1.y, V1.z, V1.x); // (down).glVertex3d(V1.y, V2.z, V1.x);.glVertex3d(V2.y, V2.z, V1.x);.glVertex3d(V2.y, V1.z, V1.x);
Gl.glEnd();Framework - это свободно-распространяемая библиотека, с открытым исходным кодом, предназначенная для быстрой и удобной разработки кросс-платформенного мультимедийного программного обеспечения в среде .NET Framewrok и Mono. Tao Framework - это один из удобных путей для использования библиотеки OpenGL при разработке в среде .NET на языке C#.
В состав библиотеки входят современные средства, которые могут понадобиться в ходе разработки мультимедиа программного обеспечения: реализация библиотеки OpenGL, реализация библиотеки FreeGlut, содержащей современные функции этой библиотеки, библиотека DevIL (легшая в основу стандарта OpenIL - Open Image Library), и многие другие.
Самые интересные библиотеки, включенные в Tao Framework:2.1.0.12 - свободно распространяемый аппаратно-программный интерфейс для визуализации 2D и 3D графики.2.4.0.2 - библиотека с открытым исходным кодом, являющаяся альтернативой библиотеке GLUT (OpenGL Utility Toolkit).1.6.8.3 (она же OpenIL) - кроссплатформенная библиотека, реализующая программный интерфейс для работы с изображениями. На данный момент библиотека поддвержвивает работу с изображениями 43-х форматов для чтения и17-ти форматов для записи.2.0.0.0 - язык высокого уровня, созданный для программирования текстурных и вершинных шейдеров.OpenAL 1.1.0.1 - свободно распространяемый аппаратно-программный интерфейс для обработки аудиоданных. (В том числе 3D звука и EAX эффектов).1.0.1.2 - библиотека для работы с вводом / выводом файловой системы, а так же различного вида архивами, на основе собственного API.1.2.13.0 - кроссплатформенная мультимедийная библиотека, активно использующаяся для написания мультемедийных приложений в операционной системе/Linux ODE 0.9.0.0 - свободно распространяемый физический прграммный интерфейс, главной особенностью которого является реализация системы динамики абсолютно твёрдого тела и системаобнаружения столкновений.2.3.5.0 - библиотека реализующая растеризацию шрифтов. Данная библиотека используется в X11(оконной системе, которая обеспечивает все стандартные инструменты и протоколы для построения GUI (графического интерфейса пользователя) в UNIX подобных операционных системах).0.4.9.0 - набор свободно-распространяемых библиотек с открытым исходным кодом. Данные мультимедийные библиотеки позволяют работать аудио и видео данными в различных форматах.
Библиотека Tao Framework является мощным свободно-распространяемым инструментом, для решения любых мультимедийных задач, преимущественно кросс-платформенного характера.