Рис. 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 разными формальными зарядами) и определение его координационного окружения, формального заряда и величины для конкретного формального заряда;