Дипломная работа: Программа для визуального анализа структурных характеристик кристаллических объектов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 4 Смещение относительно перпендикулярной оси координат

4. Произвести расчет точки для смещения по оси Y

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

Данная формула выведена следующим образом: - отображение при угле в 90 = temp (пересечение черной и синей линии на рисунке 5). Для определения длины вектора зеленой линии:

k

Рис. 5 Расчет смещения координаты Y точки (предварительный расчет)

Рис. 6 Расчет смещения координаты Y точки (окончательный вариант)

Остается вычислить итоговое смещение по оси Y (красная линия - res). Для этого: .

Следует отметить, что данное смещение всегда необходимо брать со знаком минус, так как результат вычислений будет направлен влево относительно направления вектора Y.

5. Объединение результата и получение координаты Y

Для этого необходимо сложить результаты в 3 и 4 пункте текущего алгоритма и добавить координату точки элементарной ячейки по оси Y (произведение координаты атома на параметр - B)

Рис. 7 Левый плюс - результат получения в 3 пункте, правый - получение текущей координаты атома, минус - результат полученный в 4 пункте

Также, обращаем внимание, если угол между двумя векторами меньше 90 градусов, то результат, полученный в пункте 3 не учитываем. Так как результат, полученный в пункте 3 будет имеет отрицательное значение, а также посмотрев, на рисунок 8 видно, что данное смещение не влияет на отображение Y координаты атома.

Рис. 8 Верхний плюс - получение текущей координаты атома, минус - результат полученный в 4 пункте

6. Как итог, получены координаты X, Y для выбранной элементарной ячейки и остается их корректно отобразить на экране.

2.4 Расчет межатомный расстояний

Устойчивость кристаллической решетки определяется за счет межатомного взаимодействия. То есть, чем сильнее межатомное взаимодействие, тем более устойчивой является кристаллическая решетка. [17] В таблице 3 приведены формулы для расчет межатомных расстояний в каждой группе симметрии.

Таблица 3

После проведенного анализа видно, что расчет межатомного расстояния в триклинной группе симметрии является общим подходом для получения межатомного взаимодействия. Так как при углах равных 90 градусов, произведение - будет обращаться в ноль.

Поэтому при расчете в программе достаточно пользоваться триклинным межатомным расстоянием.

2.5 Расчет координационного окружения

В химии понятие координационного числа появилось с развитием химии комплексных соединений.

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

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

Плотность упаковки вещества отображает число ближайших соседей. Чем больше координационное число, тем больше плотность и соответственно свойства вещества ближе к металлическим.

Изначально известны координаты (X, Y, Z) катиона, вокруг которого необходимо построить полиэдр и название аниона, который входит в состав окружения.

Алгоритм нахождения координационного окружения содержит следующие шаги:

1. Найти все координаты выбранного аниона. Для этого размножаем координаты атома на пространственную группу.

2. Произвести расчет межатомных расстояний между анионами и выбранным катионом (в соответствии пункта 2.3)

3. Рассчитать вклад в валентность усилий, используя: , где - координационное число, - расстояние между выбранным атомом и анионом, e - exp; Данная формулы выводится из 2 правила Полинга

4. Отсортировать список в порядке убывания по межатомным расстояниям

5. Добавлять атомы в координационное окружение, пока промежуточный вклад (сумма всех предыдущих) меньше контрольного (задается пользователем) или влияет не сильно (осуществляется проверка до 3 знаков), что соответствует формуле: + t < , где - максимальный вклад, а - промежуточному вкладу всех атомов в координационное окружение

2.6 Расчет валентных углов

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

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

Используя методы квантовой химии, можно рассчитать для простых молекул валентный угол, так и другие геометрические параметры молекулы.

Изначально получены координаты (X, Y, Z) трех атомов, между которыми необходимо рассчитать координационный угол. Произвести расчет межатомных расстояний между текущими атомами и воспользовавшись теоремой косинусов:

получить значение конкретного угла в градусах.

2.7 Трехмерные преобразования и проекции

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

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

Как известно, все необходимые для построения проекции и установления нужного ракурса преобразования координат описываются матрицами размером 4 на 4 с использованием матрицы поворота вокруг указанной оси на заданный угол, масштабирования вдоль любой оси, а также проецирования, сдвига и перспективы на главную координатную плоскость. [14]

- матриц поворотов, где X, Y, Z - соответственно углы поворотов

Матрица преобразований выглядит следующим образом:

, где

matr3x3 - Матрица получена за счет перемножения трех матриц поворотов без использования последней строки и столбца)

matr3x1 - Матрица получена в результате преобразования в перспективе,

matr1x3 - Матрица, которая производит перенос и matr1x1 - отвечает за изменение масштаба

Для перевода координаты (X, Y, Z) в (X, Y) необходимо:

1. Создание однородного вектора vec = (X, Y, Z, 1), где X, Y, Z - соответствуют первоначальным координатам атома.

2. Произвести умножение вектора на матрицу преобразований, также в случае, если масштаб не равен 0, то произвести деление на масштаб.

3. Полученные координаты X, Y и будут являться результатом преобразований

2.8 Визуализация элементарной ячейке на 3D пространстве

В пункте 2.7. объяснен алгоритм преобразования 3D точки на двухмерном пространстве. Поэтому остается реализовать алгоритм визуализации элементарной ячейке. При отображении «невидимые» ребра должны быть тоньше и измененного цвета, чем границы на переднем плане.

В первую очередь определить перспективную константу (место, с которого ведется наблюдение). Это значение будет определять поведение «камеры», которая моделируется в методе проекта. При увеличении значения, перспектива становится все менее и менее видимой, и все будет выглядеть плоским. При понижении значения, перспектива будет намного более интенсивной. [15]

Дальше следует найти максимальное расстояние и количество вершин, которые отдалены от выбранной перспективы. Для этого следует воспользоваться следующим алгоритмом: [19]

1. Изначально определить максимальное расстояние = -1 и считать, что отдалена только одна точка

2. Произвести расчеты расстояний у всех вершин параллелепипеда:

a. , где x, y, z - координаты, точек ([i] - выбранного места, [j] - вершины параллелепипеда) - расчет расстояния между перспективной константной и вершиной параллелепипеда

b. В случае, если полученное расстояние больше, чем максимально определенное, то обновляем счетчики, иначе - увеличить количество отдаленных точек

В данной ситуации возможны следующие три варианта:

1. Максимально отдалены - 4 вершины. Из этого можно сделать вывод, что видна только одна грань, а значит все линии видны

2. Максимально отдалены - 2 вершины. Видны только 2 грани, у которых одно общее ребро, соединяющее эти две точки. Дальше производится работа над удалением невидимых ребер:

a. Изначально определить все ребра, как «невидимые»

b. Найти основное ребро, которое является главным и определить его «видимым»

c. Найти ребра, которые являются смежными к главному ребру

d. Найти заключительные ребра, которые входят две вершины полученные в предыдущем пункте

3. Максимально отдалена - 1 вершина. Видны только те грани, в которые входит данная вершина. И определить их можно следующим образом:

a. Изначально определить все ребра, как «невидимые»

b. Найти ребра, в которые входит данная вершина

c. Найти оставшиеся ребра, а именно найти те ребра, которые состоят из вершины полученной в предыдущем пункте

2.9 Расчет объема полиэдров

Расчет объема правильных многогранников является важной задачей в определении полиэдра и его основных параметров.

Многогранник -- это трехмерная форма, заключенная в конечное число граней. Каждое лицо образовано многоугольником. Грани встречаются вдоль отрезков прямых, называемых ребрами, а ребра встречаются в точках, называемых вершинами. [21]

Существует несколько подходов для определения объема многогранника. Главный подход состоит в том, чтобы разложить текущий полиэдр на набор пирамид, имеющих общий пик (в данном случае - выбранный катион).

Затем необходимо сложить объемы этих пирамид, чтобы найти общий объем исходного многогранника. Для применения данной техники необходимо: найти объем каждой пирамиды. Объем пирамиды -- это площадь базового многоугольника, умноженная на расстояние от базовой плоскости до начала координат (, где S - площадь основания, а h - перпендикулярное расстояние от основания до вершины).

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

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

Чтобы разделить грань, необходимо соединить первую вершину с каждым несмежным ребром по очереди. Объем тетраэдра, образованного одним треугольником и началом координат, является определяющим фактором 3х3 из трех вершин треугольника. Например, треугольная пирамида ABCD с координатами A (3;2;1), B (2;4;8), C (1;2;1), D (6;2;1). Тогда определяющие вектора: В данном случае: X, Y, Z - координаты вектора. - координаты первой точки, - координаты второй точки.

Далее определяем объем пирамиды, как: V = , где | | - является определителем матрицы. В данном случае определить матрицы 3 на 3 считается по следующей формуле:

Выводы по главе

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

3. Инструменты и методы разработки приложения

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

3.1 Функциональные требования

Программа для визуального анализа структурных характеристик кристаллических объектов должна удовлетворять следующим функциональным требованиям:

1) Программа должна предусматривать возможность визуализации соединения на 2D и 3D проекции, сочленения координационных полиэдров и отдельных полиэдров с возможностью изменять масштаб;

2) Программа должна предусматривать функционал вращения 3D модели структуры, отдельных полиэдров, сочленения координационных полиэдров;

3) Программа должна реализовывать расчет объема элементарной ячейки и полиэдров;

4) Программа должна реализовывать расчета валентных углов;

5) Программа должна предусматривать возможность построения зависимостей между структурными параметрами отдельных соединений и разных (для сравнения и сопоставления)

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

7) Программа должна определять координационного окружения катионов анионами X (определение координационных чисел) с различающимися межатомными расстояниями катион-анион () с использованием метода валентных усилий (the bond-valence method): - валентность катиона (ионы или ), окруженного анионами (ионы );

8) Программа должна предусматривать возможность введения нового, дополнительного атома (например, активатора Bi c разными формальными зарядами) и определение его координационного окружения, формального заряда и величины для конкретного формального заряда;