9 komentarzy do “41. Równanie operacji odbicia zwierciadlanego

    1. Można, ale najpierw trzeba mieć macierz obrotu wokół dowolnie skierowanej osi, a to chyba jest jeszcze trudniejsze (zakładam, że nie korzystamy z gotowych wzorów, ale sami je wyprowadzamy). Chodzi tu o ogólne rozwiązanie, tzn. chodzi o określenie współczynników tej macierzy w zależności od dowolnych parametrów h, k, l.
      To zadanie jest trochę niedoprecyzowane, bo oprócz h, k, l potrzebne jest jeszcze coś, no ale powiedzmy, że jest to część zadania. I dodatkowo ono wykracza nieco poza klasyczne operacje symetrii krystalograficznej, bo przecież nie każda płaszczyzna sieciowa (a właściwie prawie żadna), jest elementem symetrii krystalograficznej.

      1. Wydaje się, że poniższe stwierdzenie może pomóc w poszukiwaniu rozwiązania. Przynajmniej w wersji dwuwymiarowej.
        Jeżeli mamy prostą wychodzącą z (0,0) i nachyloną pod kątem a do dodatniego kierunku OX, to operacja odbicia w tej prostej dana jest wzorem (xcos(2a)+ysin(2a), xsin(2a)-ycos(2a), z).

        Uzasadnienie wynika z poniższego rysunku oraz wzorów trygonometrycznych na sin i cos dla różnicy kątów.
        rysunek pomocniczy do wyprowadzenia
        Wektor czerwony jest odbiciem wektora niebieskiego w prostej zaznaczonej linią przerywaną.
        Współrzędne wektora niebieskiego to x = r cos(b) oraz y = r sin(b).
        Współrzędne wektora czerwonego to x’ = r cos(2a-b) oraz y’ = r sin(2a-b).
        Uwzględniając, że sin(c-d) = sin(c)sin(d)-cos(d)sin(c) oraz cos(c-d) = cos(c)cos(d)+sin(c)sin(d)
        i robiąc odpowiednie podstawienia otrzymujemy:
        x’ = x cos(2a) + y sin(2a)
        y’ = x sin(2a) – y cos(2a)
        z’ = z
        mamy więc macierz

        |cos(2a)    sin(2a)  0|
        |sin(2a)   -cos(2a)  0|
        |0          0        1|
        

        Można łatwo sprawdzić, że wyznacznik wynosi -1 a ślad 1, jak należy oczekiwać dla odbicia zwierciadlanego.

        Teraz dobrze byłoby zamienić funkcje trygonometryczne kąta podwojonego na tangens kąta, bo ten da się wyliczyć z parametrów hkl (najłatwiej zakładając ortogonalny układ współrzędnych). W tym najprostszym przypadku, po przesunięciu początku układu, tangens nachylenia prostej będzie wynosił dy/dx = (b/k)/(-a/h) = -bh/(ka).
        Wypiszmy wzory na funkcje kąta podwojonego:
        sin(2a) = 2 sin(a)cos(a)
        cos(2a) = cos2(a) – sin2(a)
        Z jedynki trygonometrycznej mamy tg2(x)cos2(x) + cos2(x) = 1, czyli cos2(x) = 1/(1+tg2(x)) oraz sin2(x) = tg2(x)/(1+tg2(x))
        Ostatecznie:
        sin(2a) = 2tg(a)/[1+tg2(a)] oraz
        cos(2a) = [1-tg2(a)]/[1+tg2(a)]

        Wstawiając odpowiednie wartości tg(x) = -bh/(ka) otrzymujemy
        sin(2a) = -2bha2k2/(a2k2+b2h2)
        cos(2a) = (a2k2-b2h2)/(a2k2+b2h2)

        Na końcu otrzymujemy mało sympatyczny wzór

        1/(a2k2+b2h2) |(a2k2-b2h2)    -2bha2k2    0|
                     |-2bha2k2   -(a2k2-b2h2)    0|
                     | 0         0    (a2k2+b2h2)|
        

        czyli macierz odbicia w płaszczyźnie (hk0) w układzie z przesuniętym punktem (0,0,0)

        Mogły by być nieco krótsze wzory… mam nadzieję, że się nie pomyliłem po drodze.

        Zakładając osie a = b (uwaga, kąt też był oznaczany jako a) otrzymamy

        sin(2a) = -2ahk2/(k2+h2)
        cos(2a) = (k2-h2)/(k2+h2)

        |(k2-h2)/(k2+h2)   -2ahk2/(k2+h2)  0|
        |-2ahk2/(k2+h2)   -(k2-h2)/(k2+h2) 0|
        |0                 0             1|
        

        Albo jest to zadanie dla cierpliwych, albo musi być prostszy sposób :-).

        1. Interesujące podejście, ale, jeśli dobrze rozumiem, ograniczone tylko do układu euklidesowego. Dobrze byłoby mieć sformułowanie ogólne dla dowolnego układu współrzędnych, czyli de facto dla układu trójskośnego (skośnego w dwóch wymiarach).

        2. Ciekawe rozwiązanie, ale jest to tylko rozwiązanie szczególne – dla płaszczyzn sieciowych zawierających oś OZ i w dodatku dla układów ortogonalnych. Ponadto dla przypadku gdy a=b, bo wyjściowa macierz (pierwsza, która pojawia się w rozwiązaniu) obowiązuje tylko dla takich układów. Czy dałoby się przedstawić rozwiązanie ogólne?

          PS. Czy dwie ostatnie macierze mają wyznacznik równy -1?

          1. No, niestety, podejście nie jest uniwersalne, ale myślałem, że da się uogólnić.

            Rzeczywiście, pomyliłem się w rachunkach.
            wzór na sin(2a) zawiera błąd, powinno być:
            sin(2a) = -2bhak/[a2k2+b2h2]
            co po podstawieniu powinno dać prawidłowe wyznaczniki macierzy.

            Podam je ponownie:
            mało sympatyczny wzór

            1/(a2k2+b2h2) |(a2k2-b2h2)    -2bhak     0|
                         |-2bhak    -(a2k2-b2h2)    0|
                         | 0         0    (a2k2+b2h2)|
            

            Zakładając osie a = b

            |(k2-h2)/(k2+h2)   -2hk/(k2+h2)  0|
            |-2hk/(k2+h2)   -(k2-h2)/(k2+h2) 0|
            |0                 0           1|
            
  1. Wydaje się, że znalezienie ogólnego rozwiązania tego problemu wymaga zastosowania innego formalizmu poza czystą arytmetyką. A przynajmniej łatwiej wówczas znaleźć to rozwiązanie. Zastosujemy tu elementy formalizmu jakim jest rachunek tensorowy.
    W załączonym pliku przedstawiona jest odpowiedź, a szczegóły rozwiązania, które wymaga sporo komentarzy przedstawię w następnym wpisie.
    Plik PDF

  2. Ponieważ rozwiązanie zadania, które chcę przedstawić wymaga paru dodatkowych wyjaśnień (zazwyczaj nie są to zagadnienia poruszane w podręcznikach krystalografii) łatwiej będzie mi przedstawić tok rozumowania w formie filmu wideo. Pierwsze 10 minut tego filmu zawiera właśnie te wyjaśnienia, a pozostałe około sześciu minut to właściwe rozwiązanie zadania.

    1. Może parę zdań podsumowania.
      Rachunek tensorowy jest bardzo pożyteczny w rozwiązywaniu wielu zagadnień zwłaszcza związanych z transformacjami układów współrzędnych czy analizą symetrii właściwości fizycznych.
      Pokazuje również piękno matematyki. Wzór, który innymi metodami byłby trudny do zapisania, w symbolice tensorowej jest krótki i zwarty, by nie powiedzieć elegancki.
      Pozostawmy więc zapisanie konkretnej macierzy operacji odbicia w płaszczyźnie o indeksach (hkl) dla układu jednoskośnego jako karę dla nieposłusznych doktorantów, a dla układu trójskośnego dla osób z cięższymi przewinieniami. Oczywiście wzór ogólny jako fragment algorytmu dla komputera stanowi naprawdę nieocenioną wartość.
      Pokażę teraz, że moje rozwiązanie dla układu kartezjańskiego (regularnego) jest słuszne i zgodne z zapisem podanym w formie tensorowej. Dla osób które czują się nieco zagubione, ale chętnie zgłębią temat.
      Zacytujmy jeszcze raz wzór:
      S(i,j) = Sij = δij– 2 d2 gimhmhj

      Na szczęście macierz metryczna przestrzeni odwrotnej (gim) dla układu regularnego jest bardzo prosta i zawiera same zera z wyjątkiem przekątnej na której są liczby 1/a2 :

      |1/a2   0   0|
      |0  1/a2    0|
      |0   0   1/a2|
      

      Co więcej wzór na kwadrat odległości międzypłaszczyznowej też jest raczej prosty: d2 = a2 /(h2 +k2 +l2 ).
      Przy obliczaniu sumy gimhm zostanie tylko jeden wyraz różny od zera.
      Przykładowo
      S(1,1) = S11 = 1 – 2 d2 (1/a2 *h) *h
      co po wstawieniu d2 i sprowadzeniu do jednego ułamka daje (k2 +l2 -h2 )/ (k2 +l2 + h2 )

      Liczba ta, dla l = 0, (zakładałem przypadek 2D, czyli płaszczyznę (hk0) ) daje wynik zgodny z wyznaczonym geometrycznie (k2 -h2 )/ (h2 + k2 ).

      Podobnie otrzymamy drugi wyraz macierzy
      S(1,2) = S12 = 0 – 2d2 (1/a2 *h)* k = -2hk/ (h2 +k2 + l2 ).

      Tym razem dla l = 0 w przypadku dwuwymiarowym otrzymujemy
      S(1,2) = -2hk/ (h2 + k2 ).
      itd.

      czyli:

      |(k2+l2-h2)/(h2+k2+l2)   -2hk/(h2+k2+l2)  -2hl/(h2+k2+l2)|
      |-2hk/(h2+k2+l2))   (h2-k2+l2)/(h2+k2+l2) -2kl/(h2+k2+l2)|
      |-2hl/(h2+k2+l2)  -2kl/(h2+k2+l2)  (h2+k2-l2)/(h2+k2+l2)|
      

      a dla (hk0):

      |(k2-h2)/(h2+k2)   -2hk/(h2+k2)  0|
      |-2hk/(h2+k2)  -(k2-h2)/(h2+k2)  0|
      |0                0            1|
      

      Na koniec rozważmy najprostsze przypadki zastosowania wzoru dla układu regularnego.
      Płaszczyzna (100) prostopadła do OX ma macierz {{-1, 0 0}, {0 1 0}, {0 0 1}}.
      Płaszczyzna (010) prostopadła do OY ma macierz {{1, 0 0}, {0 -1 0}, {0 0 1}}.
      Płaszczyzna (110) leżąca po przekątnej {{0 -1 0}, {-1 0 0}, {0 0 1}}.
      Płaszczyzna (-110) leżąca po innej przekątnej {{0 1 0}, {1 0 0}, {0 0 1}}.

      Wszystko się zgadza, można zabić komara, strzelając z armaty :-).

Skomentuj Andrzej Olczak Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Antyspam * Time limit is exhausted. Please reload CAPTCHA.