Wyjście Spis treści Poprzedni Następny
Zoptymalizowane dla IE i Firefox |
©2014 mgr
Jerzy Wałaszek |
Podrozdziały |
ANIMACJA RUCHU OKRĘGU NA TLE INNEGO
OKRĘGU CZĘŚĆ WSPÓLNA PRZESŁANIAJĄCYCH SIĘ FIGUR GWIAZDY PODWÓJNE ZAĆMIENIOWE ZASTOSOWANIA ZAKOŃCZENIE |
Rys. 2
'KRZYWE BLASKU 'POLE KOŁA Screen 9 Color 4,45:Locate 12,58:Print "x":Locate 2,42:Print "y" 'Komentarz graficzny programu Window(-320, 175)-(319, -174):Color 3,63 Line (-150,0)-(150,0),40: Line (0,170)-(0,-170),40 Const PI=3.1415926535 'Deklarujemy stałe Const R=100 Const dx=10 'Krok rysunków Dim As Double x,y,S 'Deklarujemy zmienne S=0 For x=-R TO R Step dx y=Sqr(R^2-x^2) S=(S+2*y*dx) 'Sumujemy prostokąty elementarne, Line (x,y)-(x,-y):Color 5 'wykorzystując symetrie koła Locate 5,5:'Print "S=";S 'Wypełnienie koła Next Sleep End |
Jak ważna jest wartość kroku rachunków ilustrują Rys 2a-c i tabela:
Rys. 2a dx = 10
|
Rys. 2b dx = 4
|
Rys. 2c dx = 1
|
W zależności od kroku rachunków uzyskujemy następujące przybliżenia, np.
pole koła o jednostkowym promieniu:
TAB.
dx | S | π = 3,1415926535897932384626433832795 |
0,1 | 3,141640735550 | |
0,01 | 3,14159264845924 | |
0,001 | 3,14159265373663 | |
0,0001 | 3,14159265359196 |
Wykorzystując niektóre instrukcje listingów 1 i 2 tworzymy program, który pozwala kreślić i wyliczać cześć wspólną kół
'KRZYWE BLASKU 'Wykorzystujemy tutaj znane uczniowi 'POLE WSPÓLNE DLA OBU OKRĘGÓW 'ze szkoły średniej równanie okręgu 'w postaci ogólnej '(x - x0)2+(y - y0)2 = R2. Do rysowania Screen 9 'okręgów używamy zmiennych Color 1,45:Locate 12,70:Print "x": Locate 2,42:Print "y" 'y1 i y2. Każdy okrąg składa się Window(-320, 175)-(319, -174):Color 3,63 'z dwóch połówek "+" i "-" y1, y2. Line (-250,0)-(250,0),40: Line (0,170)-(0,-170),40 Dim As Single R Const R1=100:Const R2=50 R=R1+R2 Const dx=1:Const dy=1 Dim As Double x,y,y1,y2,x0,y0 x0=150:y0=0 For x=-R TO R Step dx 'Płaszczyzna jest przeglądana w podwójnej 'pętli FOR x, FOR y. For y=-R TO R Step dy y1=Sqr(R1^2-x^2):y2=Sqr(R2^2-x^2) 'W rzeczywistości przy pomocy podwójnej 'pętli jest przeglądane pole prostokąta Pset (x,y1),23:Pset (x+x0,y0+y2),4 'o wymiarach (R1+R2)(R1+R2) - celowe jest Pset (x,-y1),23:Pset (x+x0,y0-y2),4 'więc wprowadzenie zmiennej R = R1+R2 typu Single. 'Rysowanie okręgów IF x^2+y^2<R1^2 And (x-x0)^2+(y-y0)^2<R2^2 Then Pset (x,y),7 'Warunek liczenia i kreślenia części wspólnej 'okręgów Next Next Sleep End |
Rys. 3a x0 = 150, y0 = 0 R1 = 100, R2 = 50 |
Rys. 3b x0 = 120, y0 = 60 R1 = 100, R2 = 50 |
Rys. 3c x0 = 50, y0 = -40 R1 = 100, R2 = 80 |
Rys. 3d
x0 = -40, y0 = 40 |
Rys. 3e
x0 = 0, y0 = 0 |
Rys. 3f
x0 = 0, y0 = 20 |
Oznaczmy przez d odległość między środkami okręgów. Wzajemne położenie tych okręgów :
- d > R1 + R2 - okręgi
rozłączne,
- d = R1 + R2 - okręgi są
styczne zewnętrznie (Rys. 3a),
- |R1 - R2| < d < R1
+ R2.- istnieje cześć wspólna, przy czym możemy mówić
(umownie) o zakryciu płytkim
(shallow eclipse) lub głębokim (deep eclipse) (Rys.
3b, c),
- d = |R1 + R2| - okręgi są
styczne wewnętrznie (Rys. 3f),
- d < |R1 + R2| - jeden z
okręgów zawiera się w drugim (Rys. 3d),
- d = 0 - okręgi współśrodkowe (Rys. 1e).
Łączymy algorytmy programów 1, 2 oraz 3:
'KRZYWE BLASKU 'RYSOWANIE KRZYWYCH BLASKU Screen 9 Color 1,45:Locate 12,72:Print "t":Locate 2,42: Window(-320, 175)-(319, -174):Color 3,63 Line (-250,0)-(250,0),40: Line (0,170)-(0,-5),40 Const R1=100:Const R2=100 Dim As Double x,y,x1,x2,y1,y2,x0,y0,t,S Color 3,63 R=R1+R2 For t=0 TO 300 Step 60 For x=-R TO R Step 0.001 x0=150:y0=50 'Tworzenie animacji przesłaniania vx=1:vy=0 x0=x0-vx*t:y0=y0-vy*t y1=Sqr(R1^2-x^2):y2=1.3*Sqr(R2^2-x^2) Pset (x,y1),2:Pset (x+x0,y0+y2),4 Pset (x,-y1),2:Pset (x+x0,y0-y2),4 Next Next R=R1+R2: Const dx=1:Const dy=1 FOR t=0 to 500 Step 1 x0=250:y0=50 'Rysowanie krzywych blasku vx=1:vy=0 x0=x0-vx*t:y0=y0-vy*t: S=0 For x=-R To R Step dx For y=-R To R Step dy y1=Sqr(R1^2-x^2):y2=Sqr(R2^2-x^2) IF x^2+y^2<R1^2 And (x-x0)^2+(y-y0)^2<R2^2 Then S=S+dx*dy Next Next Pset(x0,-0.008*S+120),8 Next 'Krzywa blasku Sleep End |
Takie “mechaniczne” połączenie programów z pewnością jest nie do przyjęcia dla informatyka-fachowca. Przecież obydwa programy można zamknąć jakąś wspólną pętlą. Ale proszę jednak pamiętać do kogo jest adresowana ta praca.
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe