Chaotic movement of electrons in an antidot lattice subject to the magnetic field (PL)
-
Upload
agnieszka-m-w -
Category
Documents
-
view
44 -
download
0
description
Transcript of Chaotic movement of electrons in an antidot lattice subject to the magnetic field (PL)
Praca licencjacka
Symulacje chaotycznego ruchuelektronu w sieci antykropkowej z
polem magnetycznym
Agnieszka [my maiden name :-)]
Praca wykonana pod kierunkiem dr. Zbigniewa Tkaczyka
Warszawa, 6 czerwca 2003Wydział Matematyczno-Przyrodniczy — Szkoła Nauk Ścisłych
Uniwersytet Kardynała Stefana Wyszyńskiego
Spis treści
1 Wstęp 1
2 Charakterystyka problemu 2
3 Program pinball.m 7
4 Wyniki działania programu pinball.m 7
5 Podsumowanie 10
A Kod źródłowy programu pinball.m 12
1 Wstęp
Chaos deterministyczny rozumiemy jako ruch nieregularny, którego prawadynamiki jednoznacznie określają ewolucję stanu układu w czasie, gdy znanajest jego wcześniejsza historia. W ostatnich latach—dzięki nowym wynikomteoretycznym, dostępności komputerów o dużej mocy obliczeniowej oraz wyra-finowanym technikom eksperymentalnym—stało się jasne, że zjawisko to wys-tępuje powszechnie w przyrodzie i pociąga za sobą daleko idące konsekwencjew wielu dziedzinach nauki.Jakie są te konsekwencje? W wielu przypadkach znamy już odpowiedź,
wciąż jednak więcej jest nurtujących pytań. Temat mojej pracy nawiązujedo problemu transportu elektronowego w sieciach antykropkowych, który wfizyce półprzewodników zrodził się wiele lat temu, i jest punktem wyjściadla badań prowadzących do formułowania odpowiedzi na wyżej postawionepytanie. Moim zadaniem było napisanie programu służącego do symulacjitransportu balistycznego elektronów w gazie 2DEG przy stałym polu mag-netycznym.W kolejnym rozdziale opiszę struktury fizyczne, w których obserwujemy
omawiany proces i prowadzone na nich doświadczenia. Jako że „międzyduchem i materią pośredniczy matematyka”1, przybliżę dynamikę zjawiskaprzy pomocy jej narzędzi. W ostatnim rozdziale zaprezentuję działanie napi-sanego przeze mnie programu i podzielę się spostrzeżeniami na temat uzy-skanych wyników.
1Cytuję H.D. Steinhausa.
1
2 Charakterystyka problemu
Fizyczną strukturą, w jakiej zrodził się problem, do którego nawiązuje tematmojej pracy jest tzw. sieć antykropkowa. Pokrótce opiszę sposób jej wyt-warzania i właściwości.Matryce antykropkowe sporządza się zazwyczaj w wysokiej jakości het-
erostrukturach GaAs/AlGaAs zawierających dwuwymiarowy gaz elektronowy(2DEG) w płaszczyźnie pomiędzy GaAs i AlGaAs. Elektrony są uwięzionew studni potencjału pasma przewodnictwa, a ich ruch jest skwantowany wkierunku prostopadłym do powierzchni warstw heterozłącza (oś z). Powodujeto dyskretyzację poziomów energii. Elektrony obsadzają najniższy poziom, wwyniku czego ich ruch w kierunku wzrostu warstw epitaksjalnych jest zabro-niony, natomiast mogą poruszać się swobodnie po powierzchni (w kierunku x iy). Następnie stosując techniki litograficzne i techniki trawienia powierzchniwytwarza się sieć zagłębień o rozmiarach rzędu nanometra w międzypła-szczyźnie heterozłącza (patrz rys. 1).
2DEG
GaAs
AlGaAs
wiązka elektronów
a
b
c
Rysunek 1: a – nanoszenie matrycy antykropkowej metodą litografii elek-tronowej, b – wytrawianie dziur w powierzchni 2DEG, c – gotowa sieć an-tykropkowa po usunięciu rezystu.
Krajobraz kształtującego się w obszarze tak potraktowanej struktury pe-riodycznego potencjału odpychającego przedstawia rys. 2. Elektrony poruszająsię ze stałą energią, energią Fermiego, pomiędzy słupkami potencjału.
2
Dla niskich temperatur w tak wytworzonej strukturze transport elek-tronowy w 2DEG jest transportem balistycznym.
xy
z
Rysunek 2: Kształt potencjału
Ruch elektronu w sieci antykropkowej można rozważać z perspektywymechaniki kwantowej, jak również klasycznej — dopóki długość fali Fermiegoelektronu jest znacznie mniejsza od stałej sieci. Wtedy struktury antykrop-kowe można traktować jako swoiste dwuwymiarowe kryształy, w których ruchelektronu jest chaotyczny.Takie założenie umożliwiło mi przeprowadzenie tytułowej symulacji. Elek-
tron uczyniłam klasyczną cząstką punktową i wrzucałam ją w obszar reg-ularnie rozłożonych pagórków, od których odbijał się sprężyście w trakcieswojego chaotycznego ruchu.A teraz wypowiem się na ten temat w narodowym języku Państwa Nauki2.Opiszę nasz bilard w dwuwymiarowym obszarze Q stanowiącym pros-
tokąt z wyciętą regularną siecią kół (siecią antykropkową). Taką strukturęnazywamy bilardem Sinaja3, po rosyjskim matematyku, który w 1972 rokuwykazał, że ruch cząstki w tego typu układzie jest chaotyczny.Modyfikacją w stosunku do klasycznego bilardu jest fakt, że kule poruszają
się pomiędzy odbiciami nie po liniach prostych, ale po łukach okręgów o jed-nakowych promieniach, skręcając zawsze w tę samą stronę. Prędkość kątowaruchu kuli po okręgu jest stała. Tak jak w klasycznym bilardzie, odbicia kulzachodzą według reguły „kąt odbicia równy jest kątowi padania”.Miarą rozbiegania się orbit jest zależność od czasu krzywizny tzw. frontu
falowego γ, czyli krzywej utworzonej przez położenia kul rozmieszczonych w
2Tak pięknie mówił o języku matematyki J. Mitropolski.3Model Sinaja obrazuje ruch chaotyczny wokół jednej kropki, więc chodzi mi o sieć
takich bilardów.
3
sposób ciągły w przestrzeni i prostopadłej w punktach styczności do wek-torów prędkości kul. Zakładam, że początkowa krzywizna (t=0) jest równazeru, tj. front falowy jest odcinkiem prostej. Każde odbicie infinitezymalnegoodcinka frontu falowego δγ od antykropki zwiększa jego krzywiznę wedługwzoru (wyprowadzonego później)
κ′ = κ+2
r cosϕ, (1)
gdzie κ i κ′ są krzywizną δγ odpowiednio przed i po odbiciu, r to promieńantykropki a ϕ — kąt padania odcinka δγ na antykropkę (kąt pomiędzywektorem prędkości a wektorem normalnym antykropki w miejscu odbicia).Ponieważ zawsze zachodzi ϕ ¬ π/2 to dla każdego odbicia zachodzi
κ′ > κ, (2)
czyli każde odbicie od antykropki przyczynia się do rozbiegania się trajektorii.Ze wzoru (1) wynika również, że odbicia od płaskiego brzegu bilardu (któremuodpowiada r =∞) nie zmieniają krzywizny frontu falowego.Należy zauważyć, że po każdym odbiciu front falowy nie rozrywa się i
pozostaje ciągłą krzywą. Może się natomiast zdarzyć, że krzywa ta nie będzieróżniczkowalna w niektórych punktach (co widać po podstawieniu ϕ = π/2do wzoru (1)).Dopóki rozważam tylko zmiany krzywizny, nie ma żadnego znaczenia, czy
tor ruchu kuli jest linią prostą, czy — tak jak w naszym modelu — łukiem.Udowodnię to następującym rozumowaniem. Rozważam infinitezymalny od-cinek frontu falowego δγ, będący łukiem okręgu4 o promieniu r0. Wektoryprędkości są skierowane równolegle do promieni okręgu. Po upływie dowolniemałego czasu δt kule przesuną się wzdłuż promieni o odcinek vδt. Utworząwięc łuk okręgu δγ′ o większym promieniu r′ = r0 + vδt ale tym samymśrodku i długości kątowej. Taki kształt przybrałby front falowy, gdyby kuleporuszały się po liniach prostych, a nie po łukach. W drugim przypadku,którym się zajmuję, przesuną się dodatkowo prostopadle do promieni o od-cinek l = (vδt)2/(2R), gdzie R jest promieniem łuku po którym porusza siękażda kula (promieniem cyklotronowym). Przesunięcie to jest równoległe dołuku δγ′ i obraca go wokół środka o kąt l/r′, tworząc nowy łuk δγ′′. Ma onoczywiście taką samą krzywiznę jak łuk δγ′, czyli
1r0 + vδt
4Mówiąc ściśle, przybliżamy infinitezymalny odcinek frontu falowego łukiem okręgu.
Odstępstwo δγ od łuku jest małą wyższego rzędu niż długość.
4
Pokazałam tym samym, że obecność dodatkowego przesunięcia nie zmieniafaktu, że zależność czasowa krzywizny κ(t) frontu falowego pomiędzy odbi-ciami jest w naszym modelu taka sama, jak w klasycznym bilardzie:
κ(t) =κ(t0)
1 + κ(t0)v(t− t0). (3)
Dla t → ∞ krzywizna frontu falowego dąży do zera. Wynika z tego, żerozbieżność wykładnicza orbit wymaga dostatecznie częstych zderzeń z an-tykropkami (wrócę do tego problemu później).Powrócę teraz do wzoru (1) i podam jego dowód. Załóżmy, że na an-
tykropkę o promieniu r pada pod kątem ϕ inifinitezymalny odcinek frontufalowego δγ będący łukiem o promieniu krzywizny d. Rozważam odbiciedwóch kul 1 i 2 znajdujących się na przeciwległych końca łuku δγ i odd-alonych od siebie o bardzo małą długość kątową δα. Kąt pomiędzy wektoramiich prędkości ~v1 i ~v2 przed odbiciem jest równy właśnie δα. Po odbiciu, nowewektory prędkości ~v′1 i ~v
′
2 utworzą kąt 2δθ + δα, gdzie δθ jest kątem, jakiutworzą na obwodzie antykropki miejsca odbicia obu kul. Przybliżając poodbiciu kształt frontu falowego zawartego pomiędzy kulami 1 i 2 kolejnymłukiem δγ′, dostaję związek pomiędzy promieniami krzywizny łuków:
dδα = d′(2δθ + δα), (4)
gdzie d′ jest promieniem krzywizny łuku δγ′.
r
δα
δθ
~v1~v2
~v′1
~v′2
C
BA
Rysunek 3: Odbicie dwóch trajektorii od antykropki
Pozostaje mi obliczyć kąt δθ. W tym celu zauważam, że w kąt pomiędzyodcinkami AB a BC jest równy ϕ (patrz rys. 3) zaś kąt pomiędzy odcinkiem
5
AB a AC jest równy π/2. Długość odcinka AB jest w przybliżeniu równa dδα,a odcinka BC — rδθ. Otrzymuję więc zależność, pozwalającą na wyznaczeniekąta δθ:
δθ =dδα
r cosϕ.
Podstawiając tę zależność do wzoru (4) i zastępując promienie d i d′ ichodwrotnościami, otrzymuję wzór (1).Rozstrzygającym dowodem chaotyczności badanego układu jest obserwa-
cja, że na ogół (poza szczególną klasą parametrów układu) zbiór trajektoriiwybiegających z brzegu obszaru Q i nie zawierających żadnych zderzeń z an-tykropkami jest miary 0. Pominięta przeze mnie szczególna klasa parametrów,dla których to nie jest prawdą, zawiera na przykład układy, w których pro-mień cyklotronowy jest mniejszy od minimalnej odległości brzegu antykropkiod brzegu bilardu — oczywiste jest wówczas, że żadna trajektoria nie zahaczyo brzeg antykropki.Jeżeli natomiast wspomniany zbiór trajektorii o zerowej ilości zderzeń z
antykropkami (oznaczę ten zbiór przez T0) jest miary 0, to takiej samej miaryjest również trajektorii zawierające skończoną ilość zderzeń z antykropkami.Udowodnię ten fakt następująco: załóżmy, że istnieje zbiór Tn trajektorii za-wierających n <∞ zderzeń z antykropkami. Oczywiste jest, że część t′ każdejtrajektorii t ∈ Tn, następująca po wszystkich n zderzeniach, musi zawieraćzderzenia z brzegiem obszaru Q — inaczej jej dalsza trajektoria musiałabybyć krzywą zamkniętą (okręgiem), co prowadziłoby do sprzeczności (jeżeli wchwilach t > t0 orbita była krzywą zamkniętą, to musiało tak być równieżw chwilach t < t0). Niech t′′ będzie częścią trajektorii t′, zaczynającą się odpierwszego zderzenia z brzegiem obszaru Q. Nie zawiera ona żadnych zderzeńz antykropkami (te nastąpiły w części trajektorii t poprzedzającej t′′), należywięc do zbioru T0. Ponieważ zachodzi to dla każdej trajektorii t należącejdo zbioru Tn o niezerowej mierze, trajektorie t′′ tworzą podzbiór zbioru T0o również niezerowej mierze, co prowadzi do sprzeczności. Miara zbioru Tnmusi być więc zerowa. Zbiór wszystkich trajektorii zawierających skończonąilość zderzeń z antykropkami jest sumą przeliczalną zbiorów Tn. Jego miarajest zatem równa zeru, co było do okazania.Udowodniłam, że prawie wszystkie trajektorie wybiegające z brzegu ob-
szaru Q zawierają nieskończenie wiele zderzeń z antykropkami. Każde zderze-nie z antykropką pod kątem ϕ rozsuwa dwie trajektorie oddzielone od siebieo kąt δα o dodatkowy kąt
∆(δα) =2δαrκ cosϕ
(5)
gdzie κ jest krzywizną frontu falowego przed odbiciem, wziętą w punkcie
6
przecięcia go przez trajektorie. Powyższa zależność wynika z wyprowadzeniawzoru (1). Z kolei lot swobodny nie zmienia odległości kątowych sąsiadują-cych trajektorii (krzywizna frontu falowego zmniejsza się wskutek zwiększa-nia się jego rozmiarów liniowych). Oznacza to, że prawie każde dwie trajek-torie, wychodzące z tego samego punktu na brzegu obszaru Q i rozdzieloneo dowolnie mały kąt δα, po dostatecznie długim czasie będą rozdzielone okąt tak duży, że zaczną się odbijać od różnych antykropek. Z tego wynika,że mamy do czynienia z wykładniczym rozbieganiem się prawie wszystkichtrajektorii. Warto również zauważyć, że równanie (5) jest równoważne z
∆(δα)∆t
∝ δα,
co jest naocznym dowodem wykładniczej zależności δα od czasu. Model anal-izowany przeze mnie charakteryzuje się więc dodatnim wykładnikiem La-punowa.
3 Program pinball.m
Program pinball.m służący do wykonywania symulacji chaotycznego ruchuelektronu w sieci antykropkowej z prostopadłym polem magnetycznym napisa-łam w programie „Matlab” (patrz załącznik A).Po wywołaniu programu pojawia się okno dialogowe, w którym możemy
zadać wartości różnych parametrów układu, jak rozmiar sieci, odległościmiedzy kropkami, promień antykropki, promień cyklotronowy i maksymalnaliczba wykonanych odbić. Wartości odpowiadające rozmiarowi drenu i punktustartowego elektronu ustalone są w kodzie programu.Po wprowadzeniu odpowiednich danych do okienka dialogowego (rys. 4)
otrzymujemy wygenerowany przez program obraz trajektorii ruchu elektronu(patrz rys. 5).Wpisując w oknie interaktywnym programu „Matlab” polecenie
„>> movie(P)” można obejrzeć ruch elektronu w kolejnych klatkach.W trakcie działania programu w rogu okna graficznego wypisywany jest
numer kolejnego odbicia.Jeśli trajektoria elektonu tworzy orbitę przyszpiloną, program wyświetli
odpowiedni komunikat.
4 Wyniki działania programu pinball.m
Przy pomocy mojego programu przeprowadziłam kilka symulacji, na pod-stawie których wysnułam wnioski dotyczące pewnych prawidłowości w bi-
7
Rysunek 4: Okienko dialogowe programu pinball.m
lardzie elektronowym.Zaprojektowałam matrycę o wymiarach 7×7, której stosunek średnicy an-
tykropki do stałej sieci wynosił 0,2. Promień cyklotronowy był równy połowiestałej sieci. Założyłam, że elektron wpada do sieci otworem usytuowanym w10% wysokości ściany. Na przeciwległej ścianie znajduje się dren. Jego sze-rokość stanowi 20% całej ściany. Elektron wydostanie się z sieci uderzającw dowolne jego miejsce. Budowę sieci widać na zdjęciach zamieszczonych wniniejszym rozdziale.Pierwszym pomysłem było zbadanie, jak zależy liczba odbić cząstki od
położenia punktu startowego cząstki. W tym celu zmieniałam miejsce wejściaelektronu do sieci wzdłuż pionowej ściany (co ok. 1% wysokości ściany), anastępnie sporządziłam wykres zależności liczby odbić od punktu startowegocząstki (patrz rys. 6).Na wykresie widać regularnie powtarzające się odcinki o zerowej licz-
bie odbić (dla orbit przyszpilonych), które przechodzą w lokalne maksima.Po położeniu tych maksimów można wnioskować, że cząstka wykonała na-jwięcej odbić, gdy jej punkt startowy leżał dokładnie naprzeciw centrum kole-jnych antykropek. Ponadto wykres jest symetryczny względem środkowego,największego piku, a wysokość maksimów wpisuje się w naniesiony na wykresrozkład Gaussa. Ta ostatnia obserwacja może wydać się zaskakująca z uwagina postulowaną chaotyczność ruchu cząstki. Być może jej wyjaśnieniem jestfakt, że cząstka tak skonstruowanej strukturze najszybciej przemieszcza sięw kierunku drenu odbijając się od jej ścian. Ich odległość od antykropek jest
8
−10 0 10 20 30 40 50−5
0
5
10
15
20
25
30
35
40
45
50
−10 0 10 20 30 40 50 60 70
0
10
20
30
40
50
60
70
Rysunek 5: Trajektoria ruchu elektronu w sieci antykropkowej wygenerowaneprzy pomocy programu pinball.m
znaczna (bliska stałej sieci) i cząstka może wędrować wzdłuż nich po cyk-loidzie. W momencie, kiedy zaczyna swoją wędrówkę od zderzenia z jedną zantykropek w środkowym rzędzie matrycy, do ścian dostać się jej najtrud-niej. Skonstruowałam więc wnękę, w której ściany są tak blisko antykropek,że „generują” dużo odbić. Tym razem nie udało mi się znaleźć podobnejprawidłowości, co w pewnym stopniu potwierdziło moje przypuszczenie natemat jej źródła.W następnej kolejności zbadałam, jak liczba odbić zależy od wielkości
promienia cyklotronowego. Na załączonym wykresie widać, jak cząstka po-
9
0 100 200 300 400 500 600 7000
50
100
150
200
250
300
punkt startowy na osi y matrycy
liczb
a od
bic
Rysunek 6: Liczba odbić cząstki w zależności od usytułowania punktu star-towego cząstki
ruszała się po zamkniętych orbitach, nie wykonując odbić, do momentu na-trafienia na pierwszą antykropkę. Tutaj wystąpiła maksymalna liczbę odbićdla promienia toru elektronu piętnaście razy większego od promienia an-tykropki i stanowiącego mniej więcej trzecią część stałej sieci (patrz rys.7).Potem cząstka ponownie poruszała się po orbitach przyszpilonych. Z kole-jnego odcinka wykresu nie można już tak łatwo odczytać scenariusza za-chowania się cząstki w sieci. Tutaj nie zdołałam doszukać się jakichkolwiekprawidłowości.Na koniec sprawdziłam, jak liczba odbić cząstki od antykropek zależy od
rozmiarów antykropki (patrz rys. 8). Tutaj zgodnie z moimi przewidywaniamiokazało się, że im większa jest promień centrum rozpraszania, tym więcejodbić wykonuje cząstka zanim dotrze do drenu. Oczywiście, na rys. 8 widać,że dla niektórych promieni liczba odbić drastycznie spada.
5 Podsumowanie
Napisałam program służący do wykonywania symulacji ruchu elektronu wsieci antykropkowej z polem magnetycznym, rozpatrując zjawisko z punktuwidzenia mechaniki klasycznej.Realizując temat mojej pracy zaznajomiłam się z ciekawymi zagadnieni-
10
0 50 100 150 200 250 3000
100
200
300
400
500
600
700
800
900
1000
promien cyklotronowy Rc
liczb
a od
bic
Rysunek 7: Liczba odbić cząstki w zależności od promienia cyklotronowego
0 10 20 30 40 500
500
1000
1500
2000
2500
3000
promien antykropki
liczb
a od
bic
Rysunek 8: Liczba odbić cząstki w zależności od rozmiaru antykropek
ami związanymi z teorią chaosu i spróbowałam w ich świetle przeanalizowaćtemat mojej pracy. Dowiedziałam się też o metodach wytwarzania i fizycesieci antykropkowych.
11
A Kod źródłowy programu pinball.m
clear all
def={’10’,’7’,’1’,’5’,’300’};
qstn={’Odleglosc miedzy kropkami:’,’Rozmiar sieci nxn (Podaj n):’,...
’Promien kropki:’,’Promien cyklotronowy:’,’Liczba wykonanych odbi:’};
titl=’Dane’;
il_ln=1;
a=inputdlg(qstn,titl,il_ln,def);
if isempty(a)
disp(’Wprowadź poprawne dane!!’)
clear il_ln qstn def titl a a1 a2 Img p
break;
end
[ldist,nkrop,lr,r,indexk]=deal(a{1},a{2},a{3},a{4},a{5});
indexk=str2num(indexk);
ldist=str2num(ldist);
nkrop=str2num(nkrop);
lr=str2num(lr);
r=str2num(r);
index=0;
a0 = 0;
ai = 0;
wx1 = -ldist; %rozmiary układu
wy1 = -ldist+ldist/2;
wx2 = ldist*nkrop;
wy2 = ldist*nkrop;
rx=wy2-r-0.01; %punkt startowy elektronu
ry=0;
figure
wneka=[wy1 wy1+0.2*(wy2-wy1)]; %wneka wyjściowa - 20% wysokości ściany
plot([wx1+0.2 wx1+0.2],wneka,’k’,’LineWidth’,2)
fcolor = get(gcf,’Color’);
fieldp1 = [0.02 .100.1 .04];
text1=uicontrol(’Style’,’text’,’Units’,’normalized’,...
’Position’,fieldp1 + [0 0.05 0 0],’BackgroundColor’,fcolor,...
’ForegroundColor’,’k’,’String’,’Odbicie’);
field1=uicontrol(’Style’,’edit’,’Units’,’normalized’,’Position’,fieldp1,...
’BackgroundColor’,’white’,’String’,num2str(index));
axis equal
hold on
xlim([wx1 wx2])
ylim([wy1 wy2])
12
box on
for i=1:nkrop %wyrysowanie sieci
for j=1:nkrop
lx(i,j)=(i-1)*ldist;
ly(i,j)=(j-1)*ldist;
plot(lx(i,j),ly(i,j),’xk’)
plot(lr*sin(0:0.01*pi:2*pi)+lx(i,j),lr*cos(0:0.01*pi:2*pi)+ ...
ly(i,j),’Color’,[0.65 0.65 0.65],’LineWidth’,2)
end
end
for index=1:indexk %pętla kolejnych odbić
azixd=[-1 -1]’;
aziyd=[-2 -2]’;
azixu=[-11 -11]’;
aziyu=[-21 -21]’;
azcol=500;
d=sqrt((rx-lx).^2+(ry-ly).^2);
i=find(d<=lr+r & d>=abs(r-lr));
dx=lx(i)-rx;
dy=ly(i)-ry;
index
if rx<wx1+r
alephyd1 = atan2(sqrt(abs(r^2-(rx-wx1)^2)),rx-wx1);
alephyd(1) = pi + alephyd1;
alephyd(2) = pi - alephyd1;
alephyd = [rad2deg(alephyd)];
end
if ry<wy1+r
alephxd1 = atan2(sqrt(abs(r^2-(ry-wy1)^2)),ry-wy1);
alephxd(1) = 3/2*pi + alephxd1;
alephxd(2) = 3/2*pi - alephxd1;
alephxd = [rad2deg(alephxd)];
end
if rx>wx2-r
alephyu1 = atan2(sqrt(abs(r^2-(wx2-rx)^2)),wx2-rx);
alephyu(1) = alephyu1;
alephyu(2) = -alephyu1;
alephyu = [rad2deg(alephyu)];
end
if ry>wy2-r
alephxu1 = atan2(sqrt(abs(r^2-(wy2-ry)^2)),wy2-ry);
alephxu(1) = pi/2 - alephxu1;
alephxu(2) = pi/2 + alephxu1;
13
alephxu = [rad2deg(alephxu)];
end
aleph=atan2(dy,dx);
theta=acos((d(i).^2+r^2-lr^2)./(2.*d(i).*r));
a=rad2deg(aleph);
t=rad2deg(theta);
az1=rad2deg(aleph-theta);
az2=rad2deg(aleph+theta);
az = [az1,i;az2,i];
if exist(’alephxd’)
az = [az;alephxd’,azixd];
end
if exist(’alephyd’)
az = [az;alephyd’,aziyd];
end
if exist(’alephxu’)
az = [az;alephxu’,azixu];
end
if exist(’alephyu’)
az = [az;alephyu’,aziyu];
end
if isempty(az) % przypadek orbit przyszpilonych
p = rx + r * cos(0:0.01:2*pi);
q = ry + r * sin(0:0.01:2*pi);
plot(p,q)
p=’Orbita przyszpilona’;
disp(p)
msgbox(p,’UWAGA!!’)
break
else
az1 = [az(az(:,1)>=0) az(az(:,1)>=0,2)];
az2 = [az(az(:,1)<0)+360 az(az(:,1)<0,2)];
az = sortrows([az1;az2],1);
az1 = [az(az(:,1)>a0) az(az(:,1)>a0,2)];
if size(az1,1) == 0
azcol = az(1,1);
azi = az(1,2);
else
azcol = az1(1,1);
azi = az1(1,2);
if azcol - a0 < 0.0001 & azi == ai
if size(az1,1) == 1
azcol = az(1,1);
14
azi = az(1,2);
else
azcol = az1(2,1);
azi = az1(2,2);
end
end
end
xcol = rx + r * cos(deg2rad(azcol));
ycol = ry + r * sin(deg2rad(azcol));
if azcol >= a0
p = rx + r * cos(deg2rad([a0:azcol]));
q = ry + r * sin(deg2rad([a0:azcol]));
else
p = rx + r * cos(deg2rad([a0-360:azcol]));
q = ry + r * sin(deg2rad([a0-360:azcol]));
end
set(field1,’String’,num2str(index));
if sum(q>=wneka(1))*sum(q<=wneka(2))*sum(p<=wx1+0.001)~=0 %dren
index
p1=’DREN!!’;
disp(p1)
msgbox(p1,’UWAGA!!’)
return
end
plot(p,q,’k’)
P(index)=getframe; %zbieranie klatek do animacji
if azi>0
[nrx nry] = perpxy(lx(azi), ly(azi), xcol, ycol, rx, ry);
rx = 2*nrx - rx;
ry = 2*nry - ry;
elseif azi==azixd
rx = rx - 2*sqrt(abs(r^2-(ry-wy1)^2));
elseif azi==aziyd
ry = ry + 2*sqrt(abs(r^2-(rx-wx1)^2));
elseif azi==azixu
rx = rx + 2*sqrt(abs(r^2-(wy2-ry)^2));
elseif azi==aziyu
ry = ry - 2*sqrt(abs(r^2-(wx2-rx)^2));
end
if azi>0
a0 = rad2deg(atan2(ycol - ry,xcol - rx));
elseif azi==azixd
a0=180-azcol;
15
elseif azi==aziyd
a0=360-azcol;
elseif azi==azixu
a0=180-azcol;
elseif azi==aziyu
a0=360-azcol;
end
ai = azi;
if a0 < 0
a0 = a0 + 360;
end
end
clear alephxd alephyd alephxu alephyu
end % pętla główna
16