Калькулятор індексів Міллера - Перетворення перетинів кристалічної площини на (hkl)
Розрахунок індексів Міллера (hkl) з перетинів кристалічної площини. Швидкий, точний перетворювач для кристалографії, XRD-аналізу та матеріалознавства. Працює для всіх кристалічних систем.
Калькулятор індексів Міллера
Перетини кристалічної площини
Введіть перетини кристалічної площини з осями x, y та z. Використовуйте '∞' або 'нескінченність' для площин, паралельних осі.
Введіть число або ∞ для нескінченності (паралельно осі)
Введіть число або ∞ для нескінченності (паралельно осі)
Введіть число або ∞ для нескінченності (паралельно осі)
Візуалізація
Що таке індекси Міллера?
Індекси Міллера - це система позначень, що використовується в кристалографії для визначення площин та напрямків у кристалічних ґратках.
Щоб розрахувати індекси Міллера (h,k,l) з перетинів (a,b,c):
1. Знайдіть обернені значення перетинів: (1/a, 1/b, 1/c) 2. Перетворіть на найменший набір цілих чисел з тим самим співвідношенням 3. Якщо площина паралельна осі (перетин = нескінченність), її відповідний індекс Міллера дорівнює 0
- Від'ємні індекси позначаються рискою над числом, наприклад, (h̄,k,l)
- Позначення (hkl) представляє конкретну площину, а {hkl} - сімейство еквівалентних площин
- Індекси напрямку записуються у квадратних дужках [hkl], а сімейства напрямків позначаються як <hkl>
Документація
Розуміння індексів Міллера: Практичний посібник з позначення кристалічних площин
Якщо ви коли-небудь працювали з кристалографією або матеріалознавством, ви знаєте, що точний опис кристалічних площин має вирішальне значення. Індекси Міллера забезпечують саме це — систематичний спосіб ідентифікації будь-якої площини в кристалічній ґратці за допомогою трьох цілих чисел (h,k,l).
Цей калькулятор перетворює перетини площин уздовж кристалографічних осей у стандартну нотацію індексів Міллера. При аналізі кристалічних структур або інтерпретації даних рентгенівської дифракції часто потрібно посилатися на конкретні площини. Замість опису кожної площини її геометричними перетинами (що може бути громіздким), індекси Міллера дають вам стислу, загальноприйняту нотацію.
Особливо корисною цю нотацію робить те, як вона спрощує спілкування між дослідниками. Замість того, щоб говорити "площина, яка перетинає вісь x на позначці 2, вісь y на позначці 3 і вісь z на позначці 6", ви просто посилаєтесь на площину (321).Ця стандартизація має суттєве значення для кристалографії з часів, коли Вільям Голловес Міллер представив її у 1839 році.
Що таке індекси Міллера?
Індекси Міллера - це три цілих числа (h,k,l), які унікально ідентифікують сімейство паралельних площин у кристалічній ґратці. Ось ключове розуміння: вони виводяться з реципрокних значень місць перетину площини кристалографічними осями.
Уявіть це так — якщо площина перетинає кристал у специфічних точках уздовж осей x, y та z, ви беrete реципрокні значення цих точок перетину та зводите їх до найменших цілих чисел. Цей математичний підхід, хоча спочатку здається абстрактним, має практичну перевагу: площини, які є структурно подібними, мають подібні індекси, а паралельні площини мають однакові індекси незалежно від їхнього положення.
Графічне представлення індексів Міллера
[SVG-зображення залишається незмінним]
Як розрахувати індекси Міллера: Основна формула
Розрахунок індексів Міллера відбувається за простим чотирьохкроковим процесом:
- Визначте точки перетину - З'ясуйте, де площина перетинає кристалографічні осі x, y та z (назвемо їх a, b та c)
- Знайдіть реципрокні значення - Розрахуйте 1/a, 1/b та 1/c
- Позбудьтеся дробів - Помножте всі три значення на одне число, щоб усунути дроби
- Зведіть до найменших термінів - Поділіть на найбільший спільний дільник, щоб отримати найменші цілі числа
Математичне співвідношення виражається як:
Де (h,k,l) - індекси Міллера, а a, b, c - точки перетину уздовж кожної осі.
Особливі випадки, з якими ви зіткнетеся
Працюючи з індексами Міллера, ви зіткнетеся з кількома граничними випадками:
Паралельні площини - Коли площина проходить паралельно осі (не перетинаючи її), точка перетину знаходиться в нескінченності. Оскільки 1/∞ = 0, відповідний індекс стає нулем. Тому площина, паралельна осі y, може бути (201), де середній нуль вказує, що вона не перетинає вісь y.
Від'ємні точки перетину - Площини можуть перетинати осі з негативного боку від початку координат. У формальній кристалографічній нотації від'ємні індекси показуються з рискою над числом: (h̄kl). У цифрових контекстах це часто записується як (-h,k,l) для практичності.
Дробові точки перетину - Іноді ваші початкові точки перетину виявляються дробовими. Немає проблем — просто помножте всі реципрокні значення на найменше спільне кратне, щоб позбутися знаменників. Важливе співвідношення, а не абсолютні значення.
Завжди спрощуйте - Часта помилка — залишати індекси в нередукованій формі. (622) та (311) представляють ту саму сімейство площин, але кристалографи завжди використовують (311) — найменший набір цілих чисел. Думайте про це як про скорочення дробів: завжди ділите на найбільший спільний дільник.
Як використовувати цей калькулятор
Використання калькулятора є простим:
-
Введіть перетини - Введіть точки перетину площини з осями x, y та z
- Позитивні числа для перетинів на позитивному боці
- Від'ємні числа для перетинів на від'ємному боці
- Нуль або нескінченність для площин, паралельних осі
-
Отримайте миттєві результати - Калькулятор автоматично обчислює індекси Міллера
-
Перевірте візуалізацію - 3D-представлення показує орієнтацію вашої площини в кристалічній ґратці
-
Скопіюйте для роботи - Перенесіть результати безпосередньо до програмного забезпечення для аналізу або нотаток
Приклад розрахунку
Розглянемо конкретний випадок. Припустимо, у вас є площина, яка перетинає:
- вісь x у точці 2
- вісь y у точці 3
- вісь z у точці 6
Ось розрахунок:
- Почніть з перетинів: (2, 3, 6)
- Знайдіть обернені значення: (1/2, 1/3, 1/6)
- Усуньте дроби, помноживши на НСК(2,3,6) = 6: (3, 2, 1)
- Перевірте на скорочення: НСД(3,2,1) = 1, тому розрахунок завершено
Результат: площина (321)
Це поширений приклад, який демонструє повний процес. На практиці ви часто зустрічатимете простіші випадки, як площини (100) або (110), які представляють основні кристалічні грані.
Реальні застосування індексів Міллера
Індекси Міллера зустрічаються в багатьох галузях, де важлива структура кристалів. Ось де ви найчастіше їх зустрінете:
Аналіз рентгенівської дифракції
Коли ви аналізуєте рентгенівські дифракційні (XRD) патерни, індекси Міллера є незамінними. Кожен дифракційний пік відповідає певному набору кристалічних площин. Зв'язок між відстанню між площинами та кутами дифракції описується законом Брегга:
Де - відстань між площинами з індексами (h,k,l), - довжина хвилі рентгенівського випромінювання, а - кут дифракції.
У практичній роботі XRD часто потрібно індексувати дифракційні піки — зіставляти спостережувані піки з конкретними площинами (hkl). Цей процес є фундаментальним для ідентифікації невідомих кристалічних матеріалів або підтвердження кристалічної структури після синтезу.
Матеріалознавство
Поверхневі властивості - Різні кристалічні площини демонструють різні атомні конфігурації, що означає різну поверхневу енергію. Наприклад, (111) грань ГЦК металу має нижчу поверхневу енергію, ніж (100) або (110) грані. Це має величезне значення в каталізі, де швидкість реакцій залежить від того, які кристалічні грані експоновані.
Механічна поведінка - Метали деформуються вздовж специфічних кристалографічних систем ковзання. У ГЦК металах, таких як алюміній, ковзання відбувається на площинах {111} у напрямках <110>. Розуміння активних площин під час деформації допомагає передбачити поведінку матеріалу під навантаженням.
Виробництво напівпровідників - Кремнієві пластини розрізаються вздовж специфічних кристалографічних площин, найчастіше (100) або (111). Вибір впливає на швидкість епітаксійного росту, поведінку легування та продуктивність пристрою. Згідно з IEEE стандартами для напівпровідникових кристалів, орієнтація (100) домінує в сучасному КМОН-виробництві.
Аналіз текстури - Під час прокатки, кування або волочіння металів зерна набувають переважних орієнтацій (текстура). Опис цієї текстури вимагає індексів Міллера для визначення площин, що вирівнюються з напрямками обробки. Ця текстура безпосередньо впливає на властивості, такі як магнітна поведінка в електротехнічних сталях та пластичність в алюмінієвих листах.
Мінералогія
Геологи описують кристалічні грані мінералів за допомогою індексів Міллера. Коли ви розглядаєте кристал кварцу, його плоскі грані відповідають певним площинам (hkl). Спайність — як мінерали розколюються вздовж певних площин — також описується цією нотацією. Ідеальна {100} спайність галіту (кам'яної солі) або {111} спайність флюориту є класичними прикладами.
Альтернативні системи позначень
Хоча індекси Міллера домінують у кристалографії, іноді зустрічаються альтернативні позначення:
Індекси Міллера-Бравє - Для гексагональних кристалів використовується чотирьохіндексна система (hkil), де i=-(h+k), яка краще передає гексагональну симетрію. Ви зустрінете її в роботах, присвячених цинку, магнію та багатьом напівпровідникам, таким як GaN. Надлишковий четвертий індекс полегшує розпізнавання еквівалентних площин — те, що не є очевидним у тризначній системі позначень для гексагональних систем.
Символи Вебера та позначення Наумана - Вони зустрічаються переважно в старій літературі з мінералогії. Більшість сучасних робіт перейшли на індекси Міллера, але ви можете зіткнутися з ними при читанні історичних праць.
Вектори прямої ґратки - Деякі теоретичні роботи описують площини за допомогою векторів прямої ґратки замість індексів Міллера. Цей підхід є поширеним у комп'ютерному матеріалознавстві, де ви працюєте безпосередньо з атомними координатами.
Незважаючи на ці альтернативи, індекси Міллера залишаються лінгва франка кристалографії, оскільки вони працюють для всіх семи кристалічних систем і забезпечують інтуїтивно зрозумілу структуру для більшості застосувань.
Історичний розвиток
Вільям Голловс Міллер, британський мінералог, представив цю систему позначень у 1839 році у своїй "Трактаті про кристалографію". Цікаво, що Міллер не винайшов ідею індексації кристалічних граней — раніше існували системи, як-от параметри Вейса. Проривом Міллера було використання реципрочних перетинів, що елегантно вирішувало проблему паралельних площин (де перетини нескінченні) та спрощувало багато обчислень.
Справжня цінність системи стала очевидною з відкриттям дифракції рентгенівських променів Максом фон Лауе у 1912 році. Вільям Генрі Брегг та Вільям Лоуренс Брегг (батько і син) одразу визнали, як індекси Міллера чудово описують площини, відповідальні за дифракційні піки. Їхня робота 1913 року з визначення кристалічної структури закріпила індекси Міллера як незамінні інструменти.
Протягом 20-го століття, коли рентгенівська кристалографія розширилася від мінералогії до металургії, фізики твердого тіла та, зрештою, білкової кристалографії, індекси Міллера були поруч. Сьогодні вони незамінні в галузях, про які Міллер навіть не міг уявити — від аналізу напівпровідникових гетероструктур до проектування нанокаталізаторів.
Приклади реалізації
Якщо вам потрібно розрахувати індекси Міллера програмно — наприклад, ви обробляєте великі набори даних або створюєте конвеєри аналізу — ось реалізації на кількох мовах. Кожна обробляє ключові завдання: взяття реципрокних значень, очищення дробів та зведення до найменших термінів.
Реалізація на Python
1import math
2import numpy as np
3
4def calculate_miller_indices(intercepts):
5 """
6 Розрахунок індексів Міллера з перетинів
7
8 Аргументи:
9 intercepts: Список з трьох перетинів [a, b, c]
10
11 Повертає:
12 Список з трьох індексів Міллера [h, k, l]
13 """
14 # Обробка нескінченних перетинів (паралельних до осі)
15 reciprocals = []
16 for intercept in intercepts:
17 if intercept == 0 or math.isinf(intercept):
18 reciprocals.append(0)
19 else:
20 reciprocals.append(1 / intercept)
21
22 # Знаходження ненульових значень для розрахунку НСД
23 non_zero = [r for r in reciprocals if r != 0]
24
25 if not non_zero:
26 return [0, 0, 0]
27
28 # Масштабування до прийнятних цілих чисел (уникнення проблем з плаваючою комою)
29 scale = 1000
30 scaled = [round(r * scale) for r in non_zero]
31
32 # Знаходження НСД
33 gcd_value = np.gcd.reduce(scaled)
34
35 # Перетворення назад до найменших цілих чисел
36 miller_indices = []
37 for r in reciprocals:
38 if r == 0:
39 miller_indices.append(0)
40 else:
41 miller_indices.append(round((r * scale) / gcd_value))
42
43 return miller_indices
44
45# Приклад використання
46intercepts = [2, 3, 6]
47indices = calculate_miller_indices(intercepts)
48print(f"Індекси Міллера для перетинів {intercepts}: {indices}") # Виведення: [3, 2, 1]
49Реалізація на JavaScript
1function gcd(a, b) {
2 a = Math.abs(a);
3 b = Math.abs(b);
4
5 while (b !== 0) {
6 const temp = b;
7 b = a % b;
8 a = temp;
9 }
10
11 return a;
12}
13
14function gcdMultiple(numbers) {
15 return numbers.reduce((result, num) => gcd(result, num), numbers[0]);
16}
17
18function calculateMillerIndices(intercepts) {
19 // Обробка нескінченних перетинів
20 const reciprocals = intercepts.map(intercept => {
21 if (intercept === 0 || !isFinite(intercept)) {
22 return 0;
23 }
24 return 1 / intercept;
25 });
26
27 // Знаходження ненульових значень для розрахунку НСД
28 const nonZeroReciprocals = reciprocals.filter(val => val !== 0);
29
30 if (nonZeroReciprocals.length === 0) {
31 return [0, 0, 0];
32 }
33
34 // Масштабування до цілих чисел для уникнення проблем з плаваючою комою
35 const scale = 1000;
36 const scaled = nonZeroReciprocals.map(val => Math.round(val * scale));
37
38 // Знаходження НСД
39 const divisor = gcdMultiple(scaled);
40
41 // Перетворення до найменших цілих чисел
42 const millerIndices = reciprocals.map(val =>
43 val === 0 ? 0 : Math.round((val * scale) / divisor)
44 );
45
46 return millerIndices;
47}
48
49// Приклад
50const intercepts = [2, 3, 6];
51const indices = calculateMillerIndices(intercepts);
52console.log(`Індекси Міллера для перетинів ${intercepts}: (${indices.join(',')})`);
53// Виведення: Індекси Міллера для перетинів 2,3,6: (3,2,1)
54Реалізація на Java
1import java.util.Arrays;
2
3public class MillerIndicesCalculator {
4
5 public static int gcd(int a, int b) {
6 a = Math.abs(a);
7 b = Math.abs(b);
8
9 while (b != 0) {
10 int temp = b;
11 b = a % b;
12 a = temp;
13 }
14
15 return a;
16 }
17
18 public static int gcdMultiple(int[] numbers) {
19 int result = numbers[0];
20 for (int i = 1; i < numbers.length; i++) {
21 result = gcd(result, numbers[i]);
22 }
23 return result;
24 }
25
26 public static int[] calculateMillerIndices(double[] intercepts) {
27 double[] reciprocals = new double[intercepts.length];
28
29 // Розрахунок реципрокних значень
30 for (int i = 0; i < intercepts.length; i++) {
31 if (intercepts[i] == 0 || Double.isInfinite(intercepts[i])) {
32 reciprocals[i] = 0;
33 } else {
34 reciprocals[i] = 1 / intercepts[i];
35 }
36 }
37
38 // Підрахунок ненульових значень
39 int nonZeroCount = 0;
40 for (double r : reciprocals) {
41 if (r != 0) nonZeroCount++;
42 }
43
44 if (nonZeroCount == 0) {
45 return new int[]{0, 0, 0};
46 }
47
48 // Масштабування до цілих чисел
49 int scale = 1000;
50 int[] scaled = new int[nonZeroCount];
51 int index = 0;
52
53 for (double r : reciprocals) {
54 if (r != 0) {
55 scaled[index++] = (int) Math.round(r * scale);
56 }
57 }
58
59 // Знаходження НСД
60 int divisor = gcdMultiple(scaled);
61
62 // Перетворення до найменших цілих чисел
63 int[] millerIndices = new int[reciprocals.length];
64 for (int i = 0; i < reciprocals.length; i++) {
65 if (reciprocals[i] == 0) {
66 millerIndices[i] = 0;
67 } else {
68 millerIndices[i] = (int) Math.round((reciprocals[i] * scale) / divisor);
69 }
70 }
71
72 return millerIndices;
73 }
74
75 public static void main(String[] args) {
76 double[] intercepts = {2, 3, 6};
77 int[] indices = calculateMillerIndices(intercepts);
78
79 System.out.println("Індекси Міллера для перетинів " +
80 Arrays.toString(intercepts) + ": " +
81 Arrays.toString(indices));
82 // Виведення: Індекси Міллера для перетинів [2.0, 3.0, 6.0]: [3, 2, 1]
83 }
84}
85Реалізація на Excel VBA
1' Функція Excel VBA для розрахунку індексів Міллера
2Function CalculateMillerIndices(x As Double, y As Double, z As Double) As String
3 Dim recipX As Double, recipY As Double, recipZ As Double
4 Dim nonZeroCount As Integer, i As Integer
5 Dim scale As Long, gcdVal As Long
6 Dim scaledVals() As Long
7 Dim millerH As Long, millerK As Long, millerL As Long
8
9 ' Розрахунок реципрокних значень
10 If x = 0 Then
11 recipX = 0
12 Else
13 recipX = 1 / x
14 End If
15
16 If y = 0 Then
17 recipY = 0
18 Else
19 recipY = 1 / y
20 End If
21
22 If z = 0 Then
23 recipZ = 0
24 Else
25 recipZ = 1 / z
26 End If
27
28 ' Підрахунок ненульових значень
29 nonZeroCount = 0
30 If recipX <> 0 Then nonZeroCount = nonZeroCount + 1
31 If recipY <> 0 Then nonZeroCount = nonZeroCount + 1
32 If recipZ <> 0 Then nonZeroCount = nonZeroCount + 1
33
34 If nonZeroCount = 0 Then
35 CalculateMillerIndices = "(0,0,0)"
36 Exit Function
37 End If
38
39 ' Масштабування до цілих чисел
40 scale = 1000
41 ReDim scaledVals(1 To nonZeroCount)
42 i = 1
43
44 If recipX <> 0 Then
45 scaledVals(i) = Round(recipX * scale)
46 i = i + 1
47 End If
48
49 If recipY <> 0 Then
50 scaledVals(i) = Round(recipY * scale)
51 i = i + 1
52 End If
53
54 If recipZ <> 0 Then
55 scaledVals(i) = Round(recipZ * scale)
56 End If
57
58 ' Знаходження НСД
59 gcdVal = scaledVals(1)
60 For i = 2 To nonZeroCount
61 gcdVal = GCD(gcdVal, scaledVals(i))
62 Next i
63
64 ' Розрахунок індексів Міллера
65 If recipX = 0 Then
66 millerH = 0
67 Else
68 millerH = Round((recipX * scale) / gcdVal)
69 End If
70
71 If recipY = 0 Then
72 millerK = 0
73 Else
74 millerK = Round((recipY * scale) / gcdVal)
75 End If
76
77 If recipZ = 0 Then
78 millerL = 0
79 Else
80 millerL = Round((recipZ * scale) / gcdVal)
81 End If
82
83 CalculateMillerIndices = "(" & millerH & "," & millerK & "," & millerL & ")"
84End Function
85
86Function GCD(a As Long, b As Long) As Long
87 Dim temp As Long
88
89 a = Abs(a)
90 b = Abs(b)
91
92 Do While b <> 0
93 temp = b
94 b = a Mod b
95 a = temp
96 Loop
97
98 GCD = a
99End Function
100
101' Використання в Excel:
102' =CalculateMillerIndices(2, 3, 6)
103' Результат: (3,2,1)
104Реалізація на C++
1#include <iostream>
2#include <vector>
3#include <cmath>
4#include <numeric>
5#include <algorithm>
6
7// Розрахунок НСД двох чисел
8int gcd(int a, int b) {
9 a = std::abs(a);
10 b = std::abs(b);
11
12 while (b != 0) {
13 int temp = b;
14 b = a % b;
15 a = temp;
16 }
17
18 return a;
19}
20
21// Розрахунок НСД кількох чисел
22int gcdMultiple(const std::vector<int>& numbers) {
23 int result = numbers[0];
24 for (size_t i = 1; i < numbers.size(); ++i) {
25 result = gcd(result, numbers[i]);
26 }
27 return result;
28}
29
30// Розрахунок індексів Міллера з перетинів
31std::vector<int> calculateMillerIndices(const std::vector<double>& intercepts) {
32 std::vector<double> reciprocals;
33
34 // Розрахунок реципрокних значень
35 for (double intercept : intercepts) {
36 if (intercept == 0 || std::isinf(intercept)) {
37 reciprocals.push_back(0);
38 } else {
39 reciprocals.push_back(1.0 / intercept);
40 }
41 }
42
43 // Знаходження ненульових значень
44 std::vector<double> nonZeroReciprocals;
45 for (double r : reciprocals) {
46 if (r != 0) {
47 nonZeroReciprocals.push_back(r);
48 }
49 }
50
51 if (nonZeroReciprocals.empty()) {
52 return {0, 0, 0};
53 }
54
55 // Масштабування до цілих чисел
56 const int scale = 1000;
57 std::vector<int> scaled;
58 for (double r : nonZeroReciprocals) {
59 scaled.push_back(std::round(r * scale));
60 }
61
62 // Знаходження НСД
63 int divisor = gcdMultiple(scaled);
64
65 // Перетворення до найменших цілих чисел
66 std::vector<int> millerIndices;
67 for (double r : reciprocals) {
68 if (r == 0) {
69 millerIndices.push_back(0);
70 } else {
71 millerIndices.push_back(std::round((r * scale) / divisor));
72 }
73 }
74
75 return millerIndices;
76}
77
78int main() {
79 std::vector<double> intercepts = {2, 3, 6};
80 std::vector<int> indices = calculateMillerIndices(intercepts);
81
82 std::cout << "Індекси Міллера для перетинів [";
83 for (size_t i = 0; i < intercepts.size(); ++i) {
84 std::cout << intercepts[i];
85 if (i < intercepts.size() - 1) std::cout << ", ";
86 }
87 std::cout << "]: (";
88
89 for (size_t i = 0; i < indices.size(); ++i) {
90 std::cout << indices[i];
91 if (i < indices.size() - 1) std::cout << ",";
92 }
93 std::cout << ")" << std::endl;
94
95 // Виведення: Індекси Міллера для перетинів [2, 3, 6]: (3,2,1)
96
97 return 0;
98}
99Практичні приклади та розв'язання
Опрацювання прикладів допомагає закріпити процес обчислення:
Випадок 1: Стандартне обчислення
- Перетини: (2, 3, 6) → Реципрочні: (1/2, 1/3, 1/6) → Очищення дробів (×6): (3, 2, 1)
- Результат: (321)
Випадок 2: Площина паралельна до осі
- Перетини: (1, ∞, 2) → Реципрочні: (1, 0, 1/2) → Очищення дробів (×2): (2, 0, 1)
- Результат: (201) - Цей нуль вказує, що площина ніколи не перетинає вісь Y
Випадок 3: Від'ємний перетин
- Перетини: (-1, 2, 3) → Реципрочні: (-1, 1/2, 1/3) → Очищення дробів (×6): (-6, 3, 2)
- Результат: (-6,3,2) або записаний кристалографічно як (6̄32)
Випадок 4: Дробові перетини
- Перетини: (1/2, 1/3, 1/4) → Реципрочні: (2, 3, 4) → Вже цілі числа
- Результат: (234) - Коли перетини є дробами, реципрочні часто виходять чистими
Випадок 5: Головна кубічна грань
- Перетини: (1, ∞, ∞) → Реципрочні: (1, 0, 0)
- Результат: (100) - Одна з шести основних граней кубічного кристала
Часто запитувані питання
Для чого використовуються індекси Міллера?
Індекси Міллера визначають специфічні площини в кристалічних ґратках. Ви будете використовувати їх постійно при рентгенівській дифракції (індексація піків), інженерії матеріалів (опис площин ковзання та розколу), виробництві напівпровідників (специфікація орієнтацій пластин), та мінералогії (характеристика граней кристалів). Вони є стандартною мовою для обговорення кристалографічних площин у всіх цих галузях.
Як поводитися з площинами, паралельними до осі?
Коли площина проходить паралельно до осі і ніколи її не перетинає, цей перетин знаходиться в нескінченності. Оскільки 1/∞ = 0, відповідний індекс Міллера дорівнює нулю. Площина, паралельна осі y, отримує нуль у середній позиції: (h,0,l). Це одна з елегантних особливостей позначення Міллера — воно природно обробляє такі крайні випадки.
Що означають від'ємні індекси?
Від'ємні індекси означають, що площина перетинає цю вісь на від'ємному боці від початку координат. Кристалографи записують це з рискою над числом: (h̄kl). З точки зору фізичних властивостей, площини (321) та (3̄2̄1̄) еквівалентні — це паралельні площини по різні боки від початку координат. Розрізнення має значення головним чином при описі конкретної грані кристала або аналізі орієнтаційних співвідношень.
Як індекси Міллера пов'язані зі структурою кристала?
Індекси Міллера описують набори паралельних площин, що проходять крізь кристалічну ґратку. Відстань між цими площинами (d-відстань) залежить як від індексів, так і від параметрів ґратки кристала. Вищі індекси означають більш щільно розташовані площини. У рентгенівській дифракції площини з певними значеннями (hkl) діють як дзеркала для рентгенівських променів, і d-відстань визначає кут дифракції відповідно до закону Брегга. Саме цей зв'язок пояснює, чому індексація дифракційних картин — присвоєння значень (hkl) спостережуваним піками — є фундаментальною для визначення структури.
У чому різниця між індексами Міллера та Міллера-Бравіса?
Індекси Міллера (hkl) працюють для всіх кристалічних систем, але гексагональні кристали становлять особливий виклик. У гексагональних системах кристалографічно еквівалентні площини не мають очевидно подібних індексів Міллера. Індекси Міллера-Бравіса (hkil) додають надлишковий четвертий індекс, де i = -(h+k). Це робить гексагональну симетрію явною — еквівалентні площини мають подібні індекси. Ви зіткнетеся з цим переважно при роботі з гексагональними металами (Mg, Zn, Ti) або напівпровідниками вюрциту (GaN, ZnO).
(Переклад продовжується далі...)
Посилання
-
Miller, W. H. (1839). Трактат про кристалографію. Кембридж: For J. & J.J. Deighton.
-
Ashcroft, N. W., & Mermin, N. D. (1976). Фізика твердого тіла. Holt, Rinehart and Winston.
-
Hammond, C. (2015). Основи кристалографії та дифракції (4-е вид.). Oxford University Press.
-
Cullity, B. D., & Stock, S. R. (2014). Елементи рентгенівської дифракції (3-є вид.). Pearson Education.
-
Kittel, C. (2004). Вступ до фізики твердого тіла (8-е вид.). Wiley.
-
Kelly, A., & Knowles, K. M. (2012). Кристалографія та кристалічні дефекти (2-е вид.). Wiley.
-
Міжнародний союз кристалографії. (2016). Міжнародні таблиці кристалографії, том A: Симетрія просторових груп. Wiley.
-
Giacovazzo, C., Monaco, H. L., Artioli, G., Viterbo, D., Ferraris, G., Gilli, G., Zanotti, G., & Catti, M. (2011). Основи кристалографії (3-є вид.). Oxford University Press.
-
Buerger, M. J. (1978). Елементарна кристалографія: Вступ до фундаментальних геометричних особливостей кристалів. MIT Press.
-
Tilley, R. J. (2006). Кристали та кристалічні структури. Wiley.
Короткий довідковий посібник
Індекси Міллера (hkl) забезпечують стандартизований спосіб ідентифікації кристалографічних площин за допомогою трьох цілих чисел, отриманих з реципрочних значень перетинів площини. Позначення працює у всіх кристалічних системах і є стандартом у кристалографії з 1839 року.
Незалежно від того, чи індексуєте ви дифракційні картини, описуєте системи ковзання в металах, вказуєте орієнтації напівпровідникових пластин або визначаєте площини спайності мінералів, індекси Міллера - це інструмент, який ви будете використовувати. Цей калькулятор виконує арифметичні операції - обчислення реципрочних значень, очищення дробів та зведення до найменших термінів, щоб ви могли зосередитися на інтерпретації кристалографічного значення.