Epicykloidy

Stronę tą wyświetlono już: 620 razy

Definicja i rodzaje epicykloidy

Epicykloida to krzywa, jaką kreśli punkt umieszczony na obwodzie okręgu toczącego się po zewnętrznej stronie drugiego okręgu.

Epicykloidę opisują trzy podstawowe parametry, którymi są:

  • promień okręgu wewnętrznego Rw;
  • promień okręgu toczącego się Ro;
  • promień rysowania Rr

Gdy stosunek promienia Rw do promienia Ro jest ułamkiem zwykłym oraz jego odwrotność jest liczbą całkowitą, wtedy taka epicykloida ma charakter cykliczny, którego okres wynosi 2·π radiana. Na poniższej rysunko-animacji pokazane zostały cztery takie epicykloidy.

Rys. 1
Epicykloidy:
  • a) o stosunku Ro do Rw równym 1 nazywana kardioidą lub krzywą sercową;
  • b) o stosunku Ro do Rw równym 1 / 2 ;
  • c) o stosunku Ro do Rw równym 1 / 3 ;
  • d) o stosunku Ro do Rw równym 1 / 4 .

Klatki do powyższych animacji zostały wykonane w programie wxMaxima, natomiast poskładane zostały one w programie Gimp

Epicykloidy, których stosunek promienia Ro do Rw jest ułamkiem zwykłym ale jego odwrotność nie jest liczbą całkowitą mają okres większy niż jeden pełny obrót. Przykład takiej epicykloidy można zobaczyć na poniższym rysunku.

Epicykloida o stosunku Ro do Rw równym 3/20
Rys. 2
Epicykloida, której okres pojedynczego cyklu wynosi 6·π radianów (trzy pełne obroty wokół nieruchomego koła).

Klatki do powyższych animacji zostały wykonane w programie wxMaxima za pomocą następującego kodu:

Listing 1
  1. for i : 0 step 20 thru 3*360 do(
  2. Ro:3,
  3. Rw:20,
  4. f:%pi * i / 180,
  5. plot2d([[parametric, cos(t)*Rw,sin(t)*Rw,[t,0,2*%pi],[nticks,80]],[parametric, cos(f)*(Ro+Rw)+cos(t)*Ro, sin(f) * (Ro+Rw)+sin(t)*Ro,[t,0,2*%pi],[nticks,80]],[parametric, cos(f)*(Ro+Rw)+cos(f*(Rw+Ro)/Ro)*Ro+cos(t)*.1, sin(f) * (Ro+Rw)+sin(f*(Rw+Ro)/Ro)*Ro+sin(t)*.1,[t,0,2*%pi],[nticks,80]],[parametric, cos(fi)*(Ro+Rw)+cos(fi*(Rw+Ro)/Ro)*Ro,sin(fi) * (Ro+Rw)+sin(fi*(Rw+Ro)/Ro)*Ro,[fi,0,f],[nticks,360]]],[x,-Ro*2-Rw,Ro*2+Rw],[y,-Ro*2-Rw,Ro*2+Rw],[gnuplot_term, "png size 250, 250"], [gnuplot_out_file, printf(false,"C:\\epi ~d.png",i)],[legend,false])
  6. )$

W powyżej rozpatrywanych przypadkach promień rysowania Rr jest równy promieniowi okręgu Ro, istnieje jednak możliwość, aby promienie te się od siebie różniły, takie przypadki pokazują poniższe animacje.

Rys. 3
Epicykloidy:
  • a) o stosunku Ro do Rw równym 1 o promieniach rysowania 1,5·Ro i 0,5·Ro;
  • b) o stosunku Ro do Rw równym 1 / 2 o promieniach rysowania 1,5·Ro i 0,5·Ro;
  • c) o stosunku Ro do Rw równym 1 / 3 o promieniach rysowania 1,5·Ro i 0,5·Ro;
  • d) o stosunku Ro do Rw równym 1 / 4 o promieniach rysowania 1,5·Ro i 0,5·Ro;.

Klatki do powyższych animacji zostały wykonane w programie wxMaxima, natomiast poskładane zostały one w programie Gimp

Gdy stosunek promienia Ro do promienia Rw nie da się wyrazić za pomocą ułamka zwykłego, wtedy krzywa nie zamyka się cyklicznie a jedynie może zbliżać się i oddalać od swoich krawędzi tworząc bliskie zamknięciu się przejście. Przypadek ten obrazuje poniższa animacja.

Epicykloida o promieniu Ro równym π oraz Rw równym 1
Rys. 4
Epicykloida, która nie posiada okresu zamykającego jej krzywą (promień Ro wynosi π a Rw wynosi 1).

Klatki do powyższych animacji zostały wykonane w programie wxMaxima za pomocą następującego kodu:

Listing 2
  1. for i : 0 step 20 thru 3*360 do(
  2. Ro:1,
  3. Rw:%pi,
  4. f:%pi * i / 180,
  5. plot2d([[parametric, cos(t)*Rw,sin(t)*Rw,[t,0,2*%pi],[nticks,80]],[parametric, cos(f)*(Ro+Rw)+cos(t)*Ro, sin(f) * (Ro+Rw)+sin(t)*Ro,[t,0,2*%pi],[nticks,80]],[parametric, cos(f)*(Ro+Rw)+cos(f*(Rw+Ro)/Ro)*Ro+cos(t)*.1, sin(f) * (Ro+Rw)+sin(f*(Rw+Ro)/Ro)*Ro+sin(t)*.1,[t,0,2*%pi],[nticks,80]],[parametric, cos(fi)*(Ro+Rw)+cos(fi*(Rw+Ro)/Ro)*Ro,sin(fi) * (Ro+Rw)+sin(fi*(Rw+Ro)/Ro)*Ro,[fi,0,f],[nticks,360]]],[x,-Ro*2-Rw,Ro*2+Rw],[y,-Ro*2-Rw,Ro*2+Rw],[gnuplot_term, "png size 250, 250"], [gnuplot_out_file, printf(false,"C:\\epi ~d.png",i)],[legend,false])
  6. )$

Parametryczny opis epicykloidy

Dla epicykloidy podstawowej, czyli takiej, dla której promienie Ro i Rr są sobie równe opis parametryczny przyjmuje następującą postać:

[1]

Zapis wyrażenia w formacie TeX-a:

\begin{cases} x= \left(R_w+R_o\right)\cdot \cos\varphi+R_o\cdot\cos\left(\varphi\cdot\cfrac{R_o+R_w}{R_o}\right) \\ y=\left(R_w+R_o\right)\cdot\sin\varphi+R_o\cdot\sin\left(\varphi\cdot\cfrac{R_o+R_w}{R_o}\right)\end{cases}

W przypadku, gdy RoRr wtedy równania parametryczne przyjmują postać następującą:

[2]

Zapis wyrażenia w formacie TeX-a:

\begin{cases} x= \left(R_w+R_o\right)\cdot \cos\varphi+R_r\cdot\cos\left(\varphi\cdot\cfrac{R_o+R_w}{R_o}\right)\\y=\left(R_w+R_o\right)\cdot \sin\varphi+R_r\cdot\sin\left(\varphi\cdot\cfrac{R_o+R_w}{R_o}\right)\end{cases}

Zastosowanie i miejsca występowania epicykloid

W przekładniach planetarnych punkty na obwodzie kół pośredniczących w przenoszeniu momentu obrotowego z centralnego koła zębatego na koło zewnętrzne poruszają się po epicykloidach w układzie związanym z kołem centralnym. Takie koła stosowane są w niektórych rowerach miejskich, gdzie w piaście wbudowany jest system przekładni planetarnych.

Przekładnia planetarna
Rys. 5
Przekładnia planetarna, w której punkty na obwodzie kółek planetarnych krążą wokół centralnego koła zębatego po trajektorii epicykoidalnej.

Kardioida ma wiele wspólnego z systemami nagłośniania i przechwytywania dźwięku. Miłośników kawy zapewne zachwyci fakt, że kardioidę można czasem znaleźć w filiżance kawy a nawet i herbaty.

Silnik Wankla
Rys. 6
Kardioida w filiżance kawy.
Źródło:

Z kolei epicykloida skrócona o stosunku Ro do Rw równym 1/2 opisuje kształt komory spalania w silnikach Wankla.

Silnik Wankla
Rys. 7
Animacja komory spalania i rotora zastosowanego w silniku Wankla, gdzie sama komora spalania ma kształt dający się opisać epicykloidą skróconą o stosunku Ro do Rw równym 1/2.

Grafika żółwia - kreślenie epicykloidy

W Pythonie znajduje się moduł turtle, który umożliwia kreślenie dwuwymiarowych krzywych. Oto kod programu, który wykreśli epicykloidę o równych promieniach:

Listing 3
  1. import turtle as tr
  2. import math as mt
  3. tr.pensize(10)
  4. def drawEpicykloid(rw, ro):
  5. tr.goto(rw, 0)
  6. tr.left(90)
  7. tr.circle(rw)
  8. maxangle = 360 * 5
  9. m_angle = ro / (ro + rw) * mt.pi
  10. for i in range(maxangle):
  11. i = mt.radians(i)
  12. tr.pencolor((0.5 * mt.sin(i) + 0.5, 0.5 * mt.cos(i) + 0.5, 0))
  13. tr.goto((rw + ro) * mt.cos(i) + ro * mt.cos((i + m_angle) * (ro + rw) / ro) , (rw + ro) * mt.sin(i) + ro * mt.sin((i + m_angle) * (ro + rw) / ro))
  14. drawEpicykloid(20,20)

Z kolei poniższy kod wykreśli epicykloidę, której promień wewnętrzny Rw jest mniejszy od okręgu toczącego się bez poślizgu Ro:

Listing 4
  1. import turtle as tr
  2. import math as mt
  3. tr.pensize(10)
  4. def drawEpicykloid(rw, ro):
  5. tr.goto(rw, 0)
  6. tr.left(90)
  7. tr.circle(rw)
  8. maxangle = 360 * 5
  9. m_angle = ro / (ro + rw) * mt.pi
  10. for i in range(maxangle):
  11. i = mt.radians(i)
  12. tr.pencolor((0.5 * mt.sin(i) + 0.5, 0.5 * mt.cos(i) + 0.5, 0))
  13. tr.goto((rw + ro) * mt.cos(i) + ro * mt.cos((i + m_angle) * (ro + rw) / ro) , (rw + ro) * mt.sin(i) + ro * mt.sin((i + m_angle) * (ro + rw) / ro))
  14. drawEpicykloid(20,25)

Komentarze