You are on page 1of 17

Praca licencjacka

Symulacje chaotycznego ruchu


elektronu w sieci antykropkowej z
polem magnetycznym
Agnieszka [my maiden name :-)]

Praca wykonana pod kierunkiem dr. Zbigniewa Tkaczyka

Warszawa, 6 czerwca 2003


Wydział 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 prawa
dynamiki jednoznacznie określają ewolucję stanu układu w czasie, gdy znana
jest jego wcześniejsza historia. W ostatnich latach—dzięki nowym wynikom
teoretycznym, 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 konsekwencje
w 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ązuje
do problemu transportu elektronowego w sieciach antykropkowych, który w
fizyce półprzewodników zrodził się wiele lat temu, i jest punktem wyjścia
dla badań prowadzących do formułowania odpowiedzi na wyżej postawione
pytanie. Moim zadaniem było napisanie programu służącego do symulacji
transportu 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ędzy
duchem i materią pośredniczy matematyka”1 , przybliżę dynamikę zjawiska
przy 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.
1
Cytuję H.D. Steinhausa.

1
2 Charakterystyka problemu
Fizyczną strukturą, w jakiej zrodził się problem, do którego nawiązuje temat
mojej 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ęzione
w studni potencjału pasma przewodnictwa, a ich ruch jest skwantowany w
kierunku prostopadłym do powierzchni warstw heterozłącza (oś z). Powoduje
to dyskretyzację poziomów energii. Elektrony obsadzają najniższy poziom, w
wyniku czego ich ruch w kierunku wzrostu warstw epitaksjalnych jest zabro-
niony, natomiast mogą poruszać się swobodnie po powierzchni (w kierunku x i
y). Następnie stosując techniki litograficzne i techniki trawienia powierzchni
wytwarza się sieć zagłębień o rozmiarach rzędu nanometra w międzypła-
szczyźnie heterozłącza (patrz rys. 1).

wiązka elektronów

GaAs
AlGaAs

2DEG
a

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.

y
x

Rysunek 2: Kształt potencjału

Ruch elektronu w sieci antykropkowej można rozważać z perspektywy


mechaniki kwantowej, jak również klasycznej — dopóki długość fali Fermiego
elektronu jest znacznie mniejsza od stałej sieci. Wtedy struktury antykrop-
kowe można traktować jako swoiste dwuwymiarowe kryształy, w których ruch
elektronu 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 trakcie
swojego 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 roku
wykazał, ż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ątowa
ruchu kuli po okręgu jest stała. Tak jak w klasycznym bilardzie, odbicia kul
zachodzą 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
2
Tak pięknie mówił o języku matematyki J. Mitropolski.
3
Model 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ówna
zeru, tj. front falowy jest odcinkiem prostej. Każde odbicie infinitezymalnego
odcinka frontu falowego δγ od antykropki zwiększa jego krzywiznę według
wzoru (wyprowadzonego później)
2
κ0 = κ + , (1)
r cos ϕ
gdzie κ i κ0 są krzywizną δγ odpowiednio przed i po odbiciu, r to promień
antykropki a ϕ — kąt padania odcinka δγ na antykropkę (kąt pomiędzy
wektorem prędkości a wektorem normalnym antykropki w miejscu odbicia).
Ponieważ zawsze zachodzi ϕ ¬ π/2 to dla każdego odbicia zachodzi

κ0 > κ, (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óremu
odpowiada 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ędzie
różniczkowalna w niektórych punktach (co widać po podstawieniu ϕ = π/2
do 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 . Wektory
prędkości są skierowane równolegle do promieni okręgu. Po upływie dowolnie
małego czasu δt kule przesuną się wzdłuż promieni o odcinek vδt. Utworzą
więc łuk okręgu δγ 0 o większym promieniu r 0 = r0 + vδt ale tym samym
środku i długości kątowej. Taki kształt przybrałby front falowy, gdyby kule
poruszał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 δγ 0 i obraca go wokół środka o kąt l/r 0 , tworząc nowy łuk δγ 00 . Ma on
oczywiście taką samą krzywiznę jak łuk δγ 0 , czyli
1
r0 + vδt
4
Mó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 zmienia
faktu, że zależność czasowa krzywizny κ(t) frontu falowego pomiędzy odbi-
ciami jest w naszym modelu taka sama, jak w klasycznym bilardzie:
κ(t0 )
κ(t) = . (3)
1 + κ(t0 )v(t − t0 )
Dla t → ∞ krzywizna frontu falowego dąży do zera. Wynika z tego, że
rozbież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 frontu
falowego δγ będący łukiem o promieniu krzywizny d. Rozważam odbicie
dwó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 wektorami
ich prędkości ~v1 i ~v2 przed odbiciem jest równy właśnie δα. Po odbiciu, nowe
wektory prędkości ~v10 i ~v20 utworzą kąt 2δθ + δα, gdzie δθ jest kątem, jaki
utworzą na obwodzie antykropki miejsca odbicia obu kul. Przybliżając po
odbiciu kształt frontu falowego zawartego pomiędzy kulami 1 i 2 kolejnym
łukiem δγ 0 , dostaję związek pomiędzy promieniami krzywizny łuków:

dδα = d0 (2δθ + δα), (4)

gdzie d0 jest promieniem krzywizny łuku δγ 0 .

v20
~ δθ
C r

A
B

~v10 δα

~
v2
~
v1

Rysunek 3: Odbicie dwóch trajektorii od antykropki

Pozostaje mi obliczyć kąt δθ. W tym celu zauważam, że w kąt pomiędzy


odcinkami 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 wyznaczenie
kąta δθ:
dδα
δθ = .
r cos ϕ
Podstawiając tę zależność do wzoru (4) i zastępując promienie d i d0 ich
odwrotnoś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 trajektorii
wybiegają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 antykropki
od brzegu bilardu — oczywiste jest wówczas, że żadna trajektoria nie zahaczy
o 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 miary
jest 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ęść t0 każdej
trajektorii t ∈ Tn , następująca po wszystkich n zderzeniach, musi zawierać
zderzenia z brzegiem obszaru Q — inaczej jej dalsza trajektoria musiałaby
być krzywą zamkniętą (okręgiem), co prowadziłoby do sprzeczności (jeżeli w
chwilach t > t0 orbita była krzywą zamkniętą, to musiało tak być również
w chwilach t < t0 ). Niech t00 będzie częścią trajektorii t0 , zaczynającą się od
pierwszego zderzenia z brzegiem obszaru Q. Nie zawiera ona żadnych zderzeń
z antykropkami (te nastąpiły w części trajektorii t poprzedzającej t00 ), należy
więc do zbioru T0 . Ponieważ zachodzi to dla każdej trajektorii t należącej
do zbioru Tn o niezerowej mierze, trajektorie t00 tworzą podzbiór zbioru T0
o również niezerowej mierze, co prowadzi do sprzeczności. Miara zbioru Tn
musi być więc zerowa. Zbiór wszystkich trajektorii zawierających skończoną
ilość zderzeń z antykropkami jest sumą przeliczalną zbiorów Tn . Jego miara
jest 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 siebie
o kąt δα o dodatkowy kąt
2δα
∆(δα) = (5)
rκ cos ϕ
gdzie κ jest krzywizną frontu falowego przed odbiciem, wziętą w punkcie

6
przecięcia go przez trajektorie. Powyższa zależność wynika z wyprowadzenia
wzoru (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 rozdzielone
o dowolnie mały kąt δα, po dostatecznie długim czasie będą rozdzielone o
ką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 wszystkich
trajektorii. 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 ruchu
elektronu 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ści
miedzy kropkami, promień antykropki, promień cyklotronowy i maksymalna
liczba wykonanych odbić. Wartości odpowiadające rozmiarowi drenu i punktu
startowego 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łowie
stałej sieci. Założyłam, że elektron wpada do sieci otworem usytuowanym w
10% wysokości ściany. Na przeciwległej ścianie znajduje się dren. Jego sze-
rokość stanowi 20% całej ściany. Elektron wydostanie się z sieci uderzając
w dowolne jego miejsce. Budowę sieci widać na zdjęciach zamieszczonych w
niniejszym 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ścia
elektronu do sieci wzdłuż pionowej ściany (co ok. 1% wysokości ściany), a
następnie sporządziłam wykres zależności liczby odbić od punktu startowego
czą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 wykres
rozkład Gaussa. Ta ostatnia obserwacja może wydać się zaskakująca z uwagi
na postulowaną chaotyczność ruchu cząstki. Być może jej wyjaśnieniem jest
fakt, ż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
50

45

40

35

30

25

20

15

10

−5
−10 0 10 20 30 40 50

70

60

50

40

30

20

10

−10 0 10 20 30 40 50 60 70

Rysunek 5: Trajektoria ruchu elektronu w sieci antykropkowej wygenerowane


przy 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ą z
antykropek 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źć podobnej
prawidłowości, co w pewnym stopniu potwierdziło moje przypuszczenie na
temat 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
300

250

200
liczba odbic

150

100

50

0
0 100 200 300 400 500 600 700
punkt startowy na osi y matrycy

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ę jakichkolwiek
prawidł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 przewidywaniami
okazało się, że im większa jest promień centrum rozpraszania, tym więcej
odbić 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 w
sieci antykropkowej z polem magnetycznym, rozpatrując zjawisko z punktu
widzenia mechaniki klasycznej.
Realizując temat mojej pracy zaznajomiłam się z ciekawymi zagadnieni-

10
1000

900

800

700

600
liczba odbic
500

400

300

200

100

0
0 50 100 150 200 250 300
promien cyklotronowy Rc

Rysunek 7: Liczba odbić cząstki w zależności od promienia cyklotronowego

3000

2500

2000
liczba odbic

1500

1000

500

0
0 10 20 30 40 50
promien antykropki

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 fizyce
sieci 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

You might also like