İçeriğe geç

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

Bu düzlemin Miller indisleri:
(1,1,1)

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
Yükleme hesaplayıcısı...
📚

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:

  1. Kesişimleri belirleyin - Düzlemin x, y ve z kristalografik eksenlerini nerede kestiğini saptayın (bunlara a, b ve c diyelim)
  2. Tersleri alın - 1/a, 1/b ve 1/c'yi hesaplayın
  3. Kesirleri temizleyin - Kesirleri ortadan kaldırmak için üç değeri de aynı sayıyla çarpın
  4. 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:

h:k:l=1a:1b:1ch : k : l = \frac{1}{a} : \frac{1}{b} : \frac{1}{c}

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:

  1. 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
  2. Anında sonuçları alın - Hesaplayıcı Miller indislerini otomatik olarak hesaplar

  3. Görselleştirmeyi kontrol edin - 3D bir gösterim düzleyinizin kristal örgüdeki yönelimini gösterir

  4. Ç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:

  1. Kesişim noktalarıyla başlayın: (2, 3, 6)
  2. Terslerini alın: (1/2, 1/3, 1/6)
  3. Ortak kat sayısı (LCM(2,3,6) = 6) ile çarparak kesirleri temizleyin: (3, 2, 1)
  4. İ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:

nλ=2dhklsinθn\lambda = 2d_{hkl}\sin\theta

Burada dhkld_{hkl} (h,k,l) indisli düzlemler arası mesafe, λ\lambda X-ışını dalga boyu ve θ\theta 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.

  1. 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]
49

JavaScript 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)
54

Java 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}
85

Excel 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)
104

C++ 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}
99

Pratik 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

  1. Miller, W. H. (1839). Kristalografiye Dair Bir İnceleme. Cambridge: J. & J.J. Deighton için.

  2. Ashcroft, N. W., & Mermin, N. D. (1976). Katı Hal Fiziği. Holt, Rinehart ve Winston.

  3. Hammond, C. (2015). Kristalografinin ve Kırınımın Temelleri (4. baskı). Oxford Üniversite Yayınevi.

  4. Cullity, B. D., & Stock, S. R. (2014). X-ışını Kırınımının Unsurları (3. baskı). Pearson Eğitim.

  5. Kittel, C. (2004). Katı Hal Fiziğine Giriş (8. baskı). Wiley.

  6. Kelly, A., & Knowles, K. M. (2012). Kristalografi ve Kristal Kusurları (2. baskı). Wiley.

  7. Uluslararası Kristalografi Birliği. (2016). Kristalografi için Uluslararası Tablolar, Cilt A: Uzay grubu simetrisi. Wiley.

  8. 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.

  9. Buerger, M. J. (1978). Temel Kristalografi: Kristallerin Temel Geometrik Özelliklerine Giriş. MIT Yayınevi.

  10. 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.