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.