Miller İndisleri Hesaplayıcı - Kristal Düzlem Kesişimlerini (hkl)'ye Dönüştürme
Kristal düzlem kesişimlerinden Miller indislerini (hkl) hesaplayın. Kristalografi, XRD analizi ve malzeme bilimi için hızlı, doğru bir dönüştürücü. Tüm kristal sistemleri için çalışır.
Miller İndisleri Hesaplayıcı
Kristal Düzlem Kesişimleri
Kristal düzlemin x, y ve z eksenlerini kestiği noktaları girin. Bir eksene paralel düzlemler için '∞' veya 'sonsuz' kullanın.
Bir sayı veya eksenle paralel için ∞ girin
Bir sayı veya eksenle paralel için ∞ girin
Bir sayı veya eksenle paralel için ∞ girin
Görselleştirme
Miller İndisleri Nedir?
Miller indisleri, kristalografide kristal örgülerdeki düzlem ve yönleri belirtmek için kullanılan bir gösterim sistemidir.
Kesişimlerden (a,b,c) Miller indisleri (h,k,l) hesaplanması:
1. Kesişimlerin terslerini alın: (1/a, 1/b, 1/c) 2. Aynı oranı koruyan en küçük tam sayı kümesine dönüştürün 3. Bir düzlem bir eksene paralelse (kesişim = sonsuz), karşılık gelen Miller indisi 0'dır
- Negatif indisler sayının üzerinde çizgiyle gösterilir, örn. (h̄,k,l)
- (hkl) belirli bir düzlemi, {hkl} eşdeğer düzlemler ailesini temsil eder
- Yön indisleri köşeli parantezlerle [hkl] yazılır, yön aileleri <hkl> ile gösterilir
Belgeler
Miller İndislerini Anlamak: Kristal Düzlem Notasyonu için Pratik Bir Kılavuz
Eğer daha önce kristalografya veya malzeme bilimi ile çalıştıysanız, kristal düzlemlerini doğru bir şekilde tanımlamanın kritik olduğunu bilirsiniz. Miller indisleri tam olarak bunu sağlar—sadece üç tam sayı (h,k,l) kullanarak kristal örgüsündeki herhangi bir düzlemi tanımlamanın sistematik bir yoludur.
Bu hesaplayıcı, kristalografik eksenler boyunca düzlem kesişimlerini standart Miller indisleri notasyonuna dönüştürür. Kristal yapıları analiz ederken veya X-ışını kırınım verilerini yorumlarken, sık sık belirli düzlemlere başvurmanız gerekecektir. Geometrik kesişim noktalarını (ki bu zahmetli olabilir) tanımlamak yerine, Miller indisleri size özlü, evrensel olarak anlaşılan bir notasyon sağlar.
Bu notasyonu özellikle yararlı kılan şey, araştırmacılar arasındaki iletişimi basitleştirmesidir. "x ekseninde 2, y ekseninde 3 ve z ekseninde 6 kesişen düzlem" demek yerine, basitçe (321) düzlemini referans gösterirsiniz. Bu standartlaştırma, William Hallowes Miller'ın 1839'da tanıtmasından bu yana kristalografya için temel olmuştur.
Miller İndisleri Nedir?
Miller indisleri, bir kristal örgüsü içindeki paralel düzlem ailesini benzersiz olarak tanımlayan üç tamsayıdır (h,k,l). İşte temel içgörü: bunlar, bir düzlemin kristalografik eksenlerle kesiştiği yerlerin terslerinden türetilir.
Şöyle düşünün—bir düzlem bir kristali x, y ve z eksenlerinde belirli noktalarda keserse, bu kesişim değerlerinin terslerini alır ve en küçük tam sayılara indirgersiniz. Bu matematiksel yaklaşım, başlangıçta soyut görünse de, pratik bir avantaja sahiptir: yapısal olarak benzer düzlemler benzer indisler alır ve paralel düzlemler konumlarından bağımsız olarak aynı indislere sahip olur.
Miller İndislerinin Görsel Gösterimi
[SVG içeriği aynı kalacak]
Miller İndisleri Nasıl Hesaplanır: Temel Formül
Miller indisleri hesaplaması dört adımlık basit bir süreçtir:
- Kesişimleri belirleyin - Düzlemin x, y ve z kristalografik eksenlerini nerede kestiğini saptayın (bunlara a, b ve c diyelim)
- Tersleri alın - 1/a, 1/b ve 1/c'yi hesaplayın
- Kesirleri temizleyin - Kesirleri ortadan kaldırmak için üç değeri de aynı sayıyla çarpın
- En düşük terimlere indirin - En büyük ortak bölenle bölerek en küçük tam sayıları elde edin
Matematiksel ilişki şöyle ifade edilir:
Burada (h,k,l) Miller indisleri ve a, b, c her eksendeki kesişimlerdir.
Sık karşılaşılan bir karışıklık noktası: neden tersler kullanılır? Meğerse bu seçimin pratik faydaları varmış. Bir ekseni hiç kesmeyen düzlemler (ona paralel olanlar) sonsuz bir kesişime sahip olacaktır—ama 1/∞ sıfıra eşittir, bu da bize temiz bir sayısal temsil sağlar. İşte bu zariflik, Miller notasyonunun neredeyse iki yüzyıldır kullanılmasının sebebidir.
Karşılaşacağınız Özel Durumlar
Miller indisleriyle çalışırken, başlangıçta zor görünen birkaç kenar durumla karşılaşacaksınız:
Paralel düzlemler - Bir düzlem bir eksene paralel olduğunda (hiç kesişmediğinde), o kesişim sonsuzlukta olur. 1/∞ = 0 olduğundan, karşılık gelen indis sıfır olur. Örneğin y eksenine paralel bir düzlem (201) olabilir, ortadaki sıfır onun y eksenini hiç kesmediğini gösterir.
Negatif kesişimler - Düzlemler eksenlerle orijinin negatif tarafında kesişebilir. Resmi kristalografik notasyonda, negatif indisler sayının üzerinde bir çizgiyle gösterilir: (h̄kl). Dijital ortamlarda bu genellikle pratiklik açısından (-h,k,l) olarak yazılır.
Kesirli kesişimler - Bazen ilk kesişimleriniz kesir olarak çıkabilir. Sorun değil—tüm tersleri paydalardaki en küçük ortak katı çarparak temizleyin. Önemli olan oran, mutlak değerler değil.
Her zaman basitleştirin - Sık yapılan bir hata, indisleri indirgenmiş olmayan formda bırakmaktır. (622) ve (311) aynı düzlem ailesini temsil eder, ama kristalograflar her zaman (311)'i—en düşük tam sayı kümesini—kullanır. Bunu kesirleri indirgemek gibi düşünün: her zaman en büyük ortak bölenle bölün.
Bu Hesaplayıcıyı Nasıl Kullanılır
Hesaplayıcıyı kullanmak oldukça basittir:
-
Kesişim noktalarınızı girin - Düzlemin x, y ve z eksenlerini kestiği yerleri girin
- Pozitif taraftaki kesişimler için pozitif sayılar
- Negatif taraftaki kesişimler için negatif sayılar
- Bir eksene paralel düzlemler için sıfır veya sonsuzluk
-
Anında sonuçları alın - Hesaplayıcı Miller indislerini otomatik olarak hesaplar
-
Görselleştirmeyi kontrol edin - 3D bir gösterim düzleyinizin kristal örgüdeki yönelimini gösterir
-
Çalışmanız için kopyalayın - Sonuçları doğrudan analiz yazılımınıza veya notlarınıza aktarın
Çalışılmış Örnek
Somut bir durumu ele alalım. Diyelim ki kesişim noktaları şöyle olan bir düzlem var:
- x-ekseninde 2
- y-ekseninde 3
- z-ekseninde 6
İşte hesaplama:
- Kesişim noktalarıyla başlayın: (2, 3, 6)
- Terslerini alın: (1/2, 1/3, 1/6)
- Ortak kat sayısı (LCM(2,3,6) = 6) ile çarparak kesirleri temizleyin: (3, 2, 1)
- İndirgenebilirliği kontrol edin: GCD(3,2,1) = 1, dolayısıyla bitti
Sonuç: (321) düzlemi
Bu, tüm süreci gösterdiği için yaygın bir örnektir. Pratikte, genellikle (100) veya (110) gibi daha basit düzlemlerle karşılaşacaksınız, bunlar temel kristal yüzeylerini temsil eder.
Miller İndislerinin Gerçek Dünya Uygulamaları
Miller indisleri, kristal yapının önemli olduğu birçok alanda karşımıza çıkar. İşte onları en sık karşılaşacağınız alanlar:
X-ışını Kırınım Analizi
X-ışını kırınım (XRD) desenlerini analiz ederken Miller indisleri vazgeçilmezdir. Her kırınım tepesi belirli bir kristal düzlem kümesine karşılık gelir. Düzlem aralığı ve kırınım açıları arasındaki ilişki Bragg yasasını izler:
Burada (h,k,l) indisli düzlemler arası mesafe, X-ışını dalga boyu ve kırınım açısıdır.
Pratik XRD çalışmalarında, genellikle kırınım tepelerini indekslemeniz gerekir—gözlemlenen tepeleri belirli (hkl) düzlemlerine eşleştirerek. Bu süreç, bilinmeyen kristalli malzemeleri tanımlamak veya sentezden sonra kristal yapıyı doğrulamak için temeldir.
Malzeme Mühendisliği
Yüzey özellikleri - Farklı kristal düzlemler farklı atomik dizilimler sergiler, bu da onların farklı yüzey enerjilerine sahip olduğu anlamına gelir. Örneğin, bir YMK (Yüzey Merkezli Kübik) metalin (111) yüzü, (100) veya (110) yüzeylerinden daha düşük yüzey enerjisine sahiptir. Bu, kataliz alanında çok önemlidir, burada reaksiyon hızları hangi kristal yüzeylerinin açığa çıktığına bağlıdır.
Mekanik davranış - Metaller, belirli kristalografik kayma sistemleri boyunca deforme olur. YMK metallerde, örneğin alüminyumda, kayma {111} düzlemlerinde ve <110> yönlerinde gerçekleşir. Hangi düzlemlerin deformasyon sırasında aktif olduğunu anlamak, malzeme davranışını tahmin etmeye yardımcı olur.
Yarıiletken üretimi - Silikon waferler, genellikle (100) veya (111) kristalografik düzlemler boyunca kesilir. Seçim, epitaksiyel büyüme hızlarını, katkılama davranışını ve cihaz performansını etkiler. IEEE yarıiletken kristalleri standartlarına göre, (100) yönelimi modern CMOS üretiminde hakimdir.
Doku analizi - Metaller haddelenir, dövülür veya çekilirken, taneler tercihli yönelimler (doku) geliştirir. Bu dokuyu tanımlamak, işleme yönleriyle hizalanan düzlemleri belirtmek için Miller indisleri gerektirir. Bu doku, elektrikli çeliklerde manyetik davranış ve alüminyum levhalarda sünek kırılma gibi özellikleri doğrudan etkiler.
Mineraloji
Jeologlar, mineral kristal yüzeylerini Miller indisleri kullanarak tanımlar. Bir kuvars kristalini incelediğinizde, düz yüzeyler belirli (hkl) düzlemlerine karşılık gelir. Yarılma—minerallerin belirli düzlemler boyunca nasıl kırıldığı—yine bu gösterimle açıklanır. Halit (sofra tuzu) mükemmel {100} yarılması veya flüorit'in {111} yarılması klasik örneklerdir.
Alternatif Gösterim Sistemleri
Miller indisleri kristalografide hakim olsa da, bazen alternatif gösterimlere de rastlayabilirsiniz:
Miller-Bravais indisleri - Hegzagonal kristaller için, dört indisli (hkil) bir sistem, burada i=-(h+k), hegzagonal simetriyi daha iyi yakalar. Çinko, magnezyum ve GaN gibi birçok yarı iletken üzerindeki çalışmalarda bunu göreceksiniz. Fazladan dördüncü indis, eşdeğer düzlemlerin tanınmasını hegzagonal sistemler için üç indisli gösterimden daha kolay hale getirir.
Weber sembolleri ve Naumann notasyonu - Bunlar ağırlıklı olarak eski mineraloji literatüründe görülür. Modern çalışmaların çoğu Miller indislerine geçmiş olsa da, tarihsel makaleleri okurken bu gösterimlere rastlayabilirsiniz.
Doğrudan örgü vektörleri - Bazı teorik çalışmalar, düzlemleri Miller indisleri yerine doğrudan örgü vektörleri kullanarak tanımlar. Bu yaklaşım, doğrudan atom koordinatlarıyla çalışılan hesaplamalı malzeme biliminde yaygındır.
Bu alternatiflere rağmen, Miller indisleri kristalografinin ortak dili olmaya devam eder, çünkü yedi kristal sistemin tamamında çalışır ve çoğu uygulama için sezgisel bir çerçeve sağlar.
Tarihsel Gelişim
William Hallowes Miller, İngiliz bir mineralog, bu gösterim sistemini 1839'da "Kristalografiye Dair İnceleme" adlı eserinde tanıttı. İlginç olan, Miller'ın kristal yüzlerini indeksleme fikrini icat etmemiş olması—Weiss parametreleri gibi daha önceki sistemler zaten vardı. Miller'ın asıl buluşu, kesişim noktalarının terslerini kullanmak oldu; bu yaklaşım paralel düzlemleri (kesişim noktaları sonsuz olan) elegantly ele aldı ve birçok hesaplamayı basitleştirdi.
Sistemin gerçek değeri, Max von Laue'nin 1912'de X-ışını kırınımını keşfetmesiyle açığa çıktı. William Henry Bragg ve William Lawrence Bragg (baba ve oğul) hemen Miller indislerinin kırınım tepelerinden sorumlu düzlemleri mükemmel bir şekilde tanımladığını fark ettiler. Kristal yapı belirlemesi üzerine 1913'teki çalışmaları, Miller indislerini vazgeçilmez araçlar haline getirdi.
- yüzyıl boyunca, X-ışını kristalografisi mineralojiden metalürjiye, katı hal fiziğine ve sonunda protein kristalografisine genişlerken, Miller indisleri de bu alanlarda kullanıldı. Bugün, Miller'ın hiç hayal edemeyeceği alanlarda—yarıiletken heteroyapılarını analiz etmekten nanoyapılı katalizör tasarımına kadar—vazgeçilmez bir araç olarak kullanılmaktadır.
Uygulama Örnekleri
Miller indislerini programlı olarak hesaplamanız gerekiyorsa—belki büyük veri setlerini işliyorsunuz veya analiz boru hatları oluşturuyorsunuz—işte birkaç dilde uygulamalar. Her biri temel zorlukları ele alır: tersini alma, kesirleri temizleme ve en düşük terime indirme.
Python Uygulaması
1import math
2import numpy as np
3
4def calculate_miller_indices(intercepts):
5 """
6 Kesişimlerden Miller indislerini hesapla
7
8 Args:
9 intercepts: Üç kesişimden oluşan liste [a, b, c]
10
11 Returns:
12 Üç Miller indisinden oluşan liste [h, k, l]
13 """
14 # Sonsuz kesişimleri (eksene paralel) işle
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 # GCD hesaplaması için sıfır olmayan değerleri bul
23 non_zero = [r for r in reciprocals if r != 0]
24
25 if not non_zero:
26 return [0, 0, 0]
27
28 # Makul tamsayılara ölçekle (kayan nokta sorunlarından kaçın)
29 scale = 1000
30 scaled = [round(r * scale) for r in non_zero]
31
32 # GCD'yi bul
33 gcd_value = np.gcd.reduce(scaled)
34
35 # En küçük tamsayılara dönüştür
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# Örnek kullanım
46intercepts = [2, 3, 6]
47indices = calculate_miller_indices(intercepts)
48print(f"Kesişimler için Miller indisleri {intercepts}: {indices}") # Çıktı: [3, 2, 1]
49JavaScript Uygulaması
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 // Sonsuz kesişimleri işle
20 const reciprocals = intercepts.map(intercept => {
21 if (intercept === 0 || !isFinite(intercept)) {
22 return 0;
23 }
24 return 1 / intercept;
25 });
26
27 // GCD hesaplaması için sıfır olmayan değerleri bul
28 const nonZeroReciprocals = reciprocals.filter(val => val !== 0);
29
30 if (nonZeroReciprocals.length === 0) {
31 return [0, 0, 0];
32 }
33
34 // Kayan nokta sorunlarından kaçınmak için tamsayılara ölçekle
35 const scale = 1000;
36 const scaled = nonZeroReciprocals.map(val => Math.round(val * scale));
37
38 // GCD'yi bul
39 const divisor = gcdMultiple(scaled);
40
41 // En küçük tamsayılara dönüştür
42 const millerIndices = reciprocals.map(val =>
43 val === 0 ? 0 : Math.round((val * scale) / divisor)
44 );
45
46 return millerIndices;
47}
48
49// Örnek
50const intercepts = [2, 3, 6];
51const indices = calculateMillerIndices(intercepts);
52console.log(`Kesişimler için Miller indisleri ${intercepts}: (${indices.join(',')})`);
53// Çıktı: Kesişimler için Miller indisleri 2,3,6: (3,2,1)
54Java Uygulaması
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 // Tersini hesapla
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 // Sıfır olmayan değerleri say
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 // Tamsayılara ölçekle
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 // GCD'yi bul
60 int divisor = gcdMultiple(scaled);
61
62 // En küçük tamsayılara dönüştür
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("Kesişimler için Miller indisleri " +
80 Arrays.toString(intercepts) + ": " +
81 Arrays.toString(indices));
82 // Çıktı: Kesişimler için Miller indisleri [2.0, 3.0, 6.0]: [3, 2, 1]
83 }
84}
85Excel VBA Uygulaması
1' Miller İndisleri Hesaplama için Excel VBA Fonksiyonu
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 ' Tersini hesapla
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 ' Sıfır olmayan değerleri say
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 ' Tamsayılara ölçekle
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 ' GCD'yi bul
59 gcdVal = scaledVals(1)
60 For i = 2 To nonZeroCount
61 gcdVal = GCD(gcdVal, scaledVals(i))
62 Next i
63
64 ' Miller indislerini hesapla
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'de kullanım:
102' =CalculateMillerIndices(2, 3, 6)
103' Sonuç: (3,2,1)
104C++ Uygulaması
1#include <iostream>
2#include <vector>
3#include <cmath>
4#include <numeric>
5#include <algorithm>
6
7// İki sayının GCD'sini hesapla
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// Birden fazla sayının GCD'sini hesapla
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// Kesişimlerden Miller indislerini hesapla
31std::vector<int> calculateMillerIndices(const std::vector<double>& intercepts) {
32 std::vector<double> reciprocals;
33
34 // Tersini hesapla
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 // Sıfır olmayan değerleri bul
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 // Tamsayılara ölçekle
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 // GCD'yi bul
63 int divisor = gcdMultiple(scaled);
64
65 // En küçük tamsayılara dönüştür
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 << "Kesişimler için Miller indisleri [";
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 // Çıktı: Kesişimler için Miller indisleri [2, 3, 6]: (3,2,1)
96
97 return 0;
98}
99Pratik Problemler ve Çözümler
Örnekler üzerinden çalışmak hesaplama sürecini pekiştirir:
Durum 1: Standart hesaplama
- Kesişimler: (2, 3, 6) → Tersler: (1/2, 1/3, 1/6) → Kesirleri temizle (×6): (3, 2, 1)
- Sonuç: (321)
Durum 2: Bir eksene paralel düzlem
- Kesişimler: (1, ∞, 2) → Tersler: (1, 0, 1/2) → Kesirleri temizle (×2): (2, 0, 1)
- Sonuç: (201) - Sıfır, düzlemin y eksenini hiç kesemediğini gösterir
Durum 3: Negatif kesişim
- Kesişimler: (-1, 2, 3) → Tersler: (-1, 1/2, 1/3) → Kesirleri temizle (×6): (-6, 3, 2)
- Sonuç: (-6,3,2) veya kristalografik olarak (6̄32)
Durum 4: Kesirli kesişimler
- Kesişimler: (1/2, 1/3, 1/4) → Tersler: (2, 3, 4) → Zaten tam sayılar
- Sonuç: (234) - Kesişimler kesirli olduğunda, tersler genellikle temiz çıkar
Durum 5: Ana kübik yüz
- Kesişimler: (1, ∞, ∞) → Tersler: (1, 0, 0)
- Sonuç: (100) - Kübik bir kristalde altı birincil yüzden biri
Sık Sorulan Sorular
Miller indisleri ne için kullanılır?
Miller indisleri kristal örgülerdeki belirli düzlemleri tanımlar. X-ray kırınım analizi (zirve dizinleme), malzeme mühendisliği (kayma düzlemleri ve yarılma), yarıiletken üretimi (wafer yönelimleri) ve mineraloji (kristal yüzlerini karakterize etme) gibi alanlarda sürekli olarak kullanılacaksınız. Bunlar, tüm bu alanlarda kristalografik düzlemleri tartışmak için standart dildir.
Bir eksene paralel düzlemleri nasıl ele alırım?
Bir düzlem bir eksene paralel olduğunda ve hiç kesişmediğinde, o kesişim noktası sonsuzlukta olur. 1/∞ = 0 olduğundan, karşılık gelen Miller indisi sıfırdır. Y eksenine paralel bir düzlem, orta konumda sıfır alır: (h,0,l). Bu, Miller notasyonunun zarif özelliklerinden biridir—bu sınır durumu doğal olarak ele alır.
Negatif indisler ne anlama gelir?
Negatif indisler, düzlemin o ekseni orijinin negatif tarafında kestiği anlamına gelir. Kristalograflar bunu sayının üzerinde bir çizgiyle yazar: (h̄kl). Fiziksel özellikler açısından, (321) ve (3̄2̄1̄) düzlemleri eşdeğerdir—bunlar orijinin zıt taraflarında paralel düzlemlerdir. Ayrım, genellikle belirli bir kristal yüzünü tanımlarken veya yönelim ilişkilerini analiz ederken önem kazanır.
Miller indisleri kristal yapısıyla nasıl ilişkilidir?
Miller indisleri, kristal örgüsünü kesen paralel düzlem kümelerini tanımlar. Bu düzlemler arasındaki mesafe (d-aralığı), hem indislere hem de kristal örgü parametrelerine bağlıdır. Daha yüksek indisler daha yakın aralıklı düzlemler anlamına gelir. X-ray kırınımında, belirli (hkl) değerlerine sahip düzlemler X-ışınları için ayna görevi görür ve d-aralığı, Bragg yasasına göre kırınım açısını belirler. Bu bağlantı, kırınım desenlerini dizinlemenin—gözlemlenen zirvelere (hkl) değerleri atama işleminin—yapı belirlemenin temel unsuru olmasının nedenidir.
Miller ve Miller-Bravais indisleri arasındaki fark nedir?
Miller indisleri (hkl) tüm kristal sistemler için çalışır, ancak hegzagonal kristaller özel bir zorluk oluşturur. Hegzagonal sistemlerde, kristalografik olarak eşdeğer düzlemlerin Miller indisleri açıkça benzer değildir. Miller-Bravais indisleri (hkil) fazladan bir dördüncü indis ekler, burada i = -(h+k). Bu, hegzagonal simetriyi açık bir şekilde gösterir—eşdeğer düzlemler benzer görünen indislere sahiptir. Bunu genellikle hegzagonal metaller (Mg, Zn, Ti) veya wurtzite yarıiletkenler (GaN, ZnO) ile çalışırken karşılarsınız.
(Devamı sonraki mesajda...)
Kaynaklar
-
Miller, W. H. (1839). Kristalografiye Dair Bir İnceleme. Cambridge: J. & J.J. Deighton için.
-
Ashcroft, N. W., & Mermin, N. D. (1976). Katı Hal Fiziği. Holt, Rinehart ve Winston.
-
Hammond, C. (2015). Kristalografinin ve Kırınımın Temelleri (4. baskı). Oxford Üniversite Yayınevi.
-
Cullity, B. D., & Stock, S. R. (2014). X-ışını Kırınımının Unsurları (3. baskı). Pearson Eğitim.
-
Kittel, C. (2004). Katı Hal Fiziğine Giriş (8. baskı). Wiley.
-
Kelly, A., & Knowles, K. M. (2012). Kristalografi ve Kristal Kusurları (2. baskı). Wiley.
-
Uluslararası Kristalografi Birliği. (2016). Kristalografi için Uluslararası Tablolar, Cilt A: Uzay grubu simetrisi. Wiley.
-
Giacovazzo, C., Monaco, H. L., Artioli, G., Viterbo, D., Ferraris, G., Gilli, G., Zanotti, G., & Catti, M. (2011). Kristalografinin Temelleri (3. baskı). Oxford Üniversite Yayınevi.
-
Buerger, M. J. (1978). Temel Kristalografi: Kristallerin Temel Geometrik Özelliklerine Giriş. MIT Yayınevi.
-
Tilley, R. J. (2006). Kristaller ve Kristal Yapıları. Wiley.
Hızlı Referans Özeti
Miller indisleri (hkl), bir kristal düzlemini tanımlamak için düzlemin kesişim noktalarının terslerinden türetilen üç tamsayı kullanarak standart bir yol sağlar. Gösterim, tüm kristal sistemlerinde geçerlidir ve 1839'dan beri kristalografide standart olmuştur.
İster difraksiyon desenlerini indekslerken, metallerdeki kayma sistemlerini tanımlarken, yarıiletken wafer yönelimlerini belirtirken veya mineral yarılma düzlemlerini tanımlarken olun, Miller indisleri kullanacağınız araçtır. Bu hesaplayıcı, aritmetiği halleder - terslerini alır, kesirleri temizler ve en düşük terimlerine indirir - böylece siz kristalografik anlamı yorumlamaya odaklanabilirsiniz.