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.