![]() |
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