Temat: Krzywe. (liceum) krzywe.doc – 42 kB
Celem lekcji jest wprowadzenie
parematrycznego równania okręgu, elipsy, ślimaka i epicykloidy.
Przebieg
lekcji:
1.
Przypomnienie
równania okręgu w postaci x2 + y2 = r2.
2.
Wyprowadzenie
równania okręgu z zastosowaniem funkcji trygonometrycznych - rys.1.

Rys.1. Równanie okręgu w
postaci parametrycznej: x = r*cos(); y = r*sin().
3.
Zastosowanie równania okręgu w postaci parametrycznej do komputerowego
rysowania okregu .
|
Program Okrag;
{Turbo Pascal} uses Graph; var
karta,tryb:integer; x,y,alfa,r:real; begin karta:=detect;
initGraph(karta,tryb,' '); line(0,240,639,240); line(320,0,320,479); alfa:=0; r:=6; repeat alfa:=alfa+2*pi/360; x:=r*cos(alfa);
y:=r*sin(alfa); putPixel(round(x*20+320),round(240-y*20),yellow); until alfa>2*pi; readLn; closeGraph; end. |
Program Okrag; {Think Pascal} var n:integer;
x,y,alfa,r:real; begin line(0,240,639,240); line(320,0,320,479); alfa:=0; r:=6; repeat alfa:=alfa+2*pi/360; x:=r*cos(alfa);
y:=r*sin(alfa); paintCircle (round(x*20+320),round(240-y*20),1); until alfa>2*pi; end. |
3. Rozwiązanie zadania 1:
Wykorzystując
równanie parametryczne okręgu napisać program rysujący tarczę zegara i jego ruchome
wskazówki godzinową, minutową i sekundową. (Tekst źródłowy tego programu znajduje się poniżej
zaś gotowy program znajduje się w pliku zegar.exe)
|
Program Zegar; {Turbo
Pascal} uses graph,crt,dos; var karta,tryb:integer; godz,min,sek,ssek,godzSt,minSt,sekSt:word; x_godz,y_godz,x_min,y_min,x_sek,y_sek:real; begin karta:=detect; initGraph(karta,tryb,''); for godz:=1 to 12 do fillEllipse(round(200*cos((godz*30+270)*pi/180)+320), round(200*sin((godz*30+270)*pi/180)+240),10,10); getTime(godz,min,sek,ssek); minSt:=min; sekSt:=sek; repeat setColor(white); x_godz:=100*cos((godz*30+min/2+270)*pi/180)+320;
y_godz:=100*sin((godz*30+min/2+270)*pi/180)+240;
x_min:=170*cos((min*6+270)*pi/180)+320;
y_min:=170*sin((min*6+270)*pi/180)+240; x_sek:=170*cos((sek*6+270)*pi/180)+320;
y_sek:=170*sin((sek*6+270)*pi/180)+240; line(320,240,round(x_godz),round(y_godz)); line(320,240,round(x_min),round(y_min)); setLineStyle(0,0,1); line(320,240,round(x_sek),round(y_sek)); godzSt:=godz; minSt:=min; sekSt:=sek; getTime(godz,min,sek,ssek); setColor(black); setLineStyle(0,0,3); if min<>minSt then
line(320,240,round(x_godz),round(y_godz)); if min<>minSt
thenline(320,240,round(x_min),round(y_min)); if sek<>sekSt then line(320,240,round(x_sek),round(y_sek)); until keyPressed; closegraph; end. |
program Zegar; {Think
Pascal} var godz, min, sek, ssek, godzSt, minSt, sekSt: integer; x_godz, y_godz, x_min, y_min, x_sek, y_sek: real; czas: dateTimeRec; begin for godz := 1 to 12 do paintCircle(round(180*cos((godz*30+270)*pi/180)
+300),round(180*sin((godz*30+270)*pi/180)+200),9); getTime(czas);
godz:=czas.hour; min:=czas.minute;
sek:=czas.second; repeat foreColor(blackColor); x_godz:=80*cos((godz*30+min/2+270)*pi/180)+300; y_godz :=80*sin((godz*30+min/2+270)*pi/180)+200; x_min :=160*cos((min*6+270)*pi/180)+300; y_min:=160*sin((min*6+270)*pi/180)+200; x_sek:=160*cos((sek*6+270)*pi/180)+300; y_sek:=160*sin((sek*6+270)*pi/180)+200; drawLine(300,200,round(x_godz),round(y_godz)); drawLine(300,200,round(x_min),round(y_min)); penSize(1, 1); drawLine(300,200,round(x_sek),round(y_sek)); godzSt := godz; minSt := min; sekSt := sek; getTime(czas); godz :=
czas.hour; min := czas.minute; sek :=
czas.second; foreColor(whiteColor);
penSize(3, 3); if min <> minSt then drawLine(300, 200,
round(x_godz), round(y_godz)); if min <> minSt then drawLine(300, 200,
round(x_min), round(y_min)); if sek <> sekSt then drawLine(300, 200,
round(x_sek), round(y_sek)); until button; end. |

4. Postawienie i rozwiązanie problemu 1:
W jaki sposób z okręgu można otrzymać elipsę?
Elipsę
można otrzymać z okręgu przez powinowactwo. Należy we wzorze y:=r*sin(alfa); zamiast
zmiennej r wpisać r/2 i wtedy otrzymamy powinowactwo względem
osi OX w skali 1/2 – rys.2

Rys.
2. Elipsa otrzymana jako powinowactwo okręgu.
5. Postawienie i rozwiązanie problemu
2:
Jak zmodyfikować wzory na okrąg aby otrzymać ślimaka.
Ślimak wykreśla się podobnie
jak okrąg, z tym, że rysowanie rozpoczyna się od promienia równego 0 i po
narysowaniu każdego punktu zwiększa się promień – rys.3. Takiej zmianie podlega
zmienna alfa więc w miejsce zmiennej r wpisujemy zmienną alfa i otrzymujemy:
x:=alfa*cos(alfa);
y:=alfa*sin(alfa);

Rys. 3. Ślimak
6. Postawienie i rozwiązanie problemu 3:
Po okręgu o promieniu r z prędkością kątową porusza się punkt. Dookoła tego punktu w odległości r/2 od niego z prędkością 5 porusza się drugi punkt. Jaką krzywą zakreśli ten drugi punkt?
Wystarczy dwukrotnie
wykorzystać wzory na równanie okręgu – rys.4.

Rys.4.
Obliczenie współrzędnych x,
y punktu poruszającego się po mniejszym okręgu polega na dwukrotnym
wykorzystaniu wzorów na równanie okręgu. Otrzymujemy: x = x1+x2 = x1 + r2cos
b
y = y1+y2
= y1 + r2sin b.
W wersji komputerowej,
uwzględniajac treść zadania, wzory te przyjmą postać:
x:=x+ r/2*cos(5*alfa);
y:=y + r/2*sin(5*alfa);
Otrzymaną
krzywą nazywamy epicykloidą – rys.5.
|
|
|
|
Rys.5. Okrąg i epicykloida Rys.6. Okrąg i dwie epicykloidy Rys. 7. Okrąg i trzy epicykloidy
7. Postawienie i rozwiązanie problemu 4:
Po okręgu o promieniu r z prędkością kątową porusza się punkt. Dookoła tego punktu w odległości r/2 od niego z prędkością 5 porusza się drugi punkt. Dookoła tego punktu w odległości r/4 od niego z prędkością 25 porusza się trzeci punkt Jaką krzywą zakreśli ten trzeci punkt?
Analogicznie do poprzedniej
sytuacji należy trzykrotnie wykorzystać równanie okręgu. Otrzymujemy
współrzędne punktów nowej epicykloidy:
x:=x+ r/2*cos(5*alfa)
+ r/4*cos(25*alfa;
y:=y + r/2*sin(5*alfa) + r/4*sin(25*alfa);
Wykres
tych trzech figur, okręgu i dwóch epicykloid, przedstawia rys.6.
Analogicznie
można otrzymać okrąg i 3 epicykloidy – rys.7. W tym miejscu warto zwrócić
uczniom uwagę, że podobnym zasadom ruchu podlegają planety, ich księżyce oraz
statki kosmiczne okrążające te księżyce.