algorytm.org

Krzywe cykliczne

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Krzywe cykliczne
Ocena użytkowników:***** / 12
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 01 sierpnia 2005 01:04

Wyobraźmy sobie mały okrąg toczący się po zewnętrznej, lub wewnętrznej, powierzchni drugiego okręgu - na przykład łożysko rolkowe. Zaznaczona na jednym z okręgów kropka kreśli w powietrzu złożoną krzywą, którą nazywamy trochoidą. Dokładnie rzecz ujmując trochoida to krzywa płaska nakreślona przez punkt leżący na promieniu okręgu toczącego się po stronie wewnętrznej (wówczas mówimy, że jest to hipotrochoida lub hipocykloida), lub po stronie zewnętrznej drugiego okręgu (wówczas nazywamy ją epitrochoidą lub epicykloidą).
Rozpatrzmy najpierw przypadek pierwszy. Hipocykloida to krzywa płaska otrzymywana jako ślad punktu należącego do okręgu o promieniu r toczącego się po wewnętrznej powierzchni innego, okręgu o promieniu R. Współrzędne punktów hipocykloidy dane są układem równań:
x=(R-r)\cos(t)+r*\cos\left(\frac{(R-r)*t}{r}\right)\\\\ y=(R-r)\sin(t)-r*\sin\left(\frac{(R-r)*t}{r}\right)
Podstawiając za t kolejne liczby otrzymujemy współrzędne kolejnych punktów, tworzących hipocykloidę. Stosunek R/r określa symetrię otrzymanej hipocykloidy. Na rysunku zamieszczonym poniżej widzimy cykloidę, której stosunek symetrii wynosi 4.

Hipocykloida wygląda następująco:
Hipocykloidy

Uogólnieniem hipocykloidy jest hipotrochoida (hipocykloida skrócona oraz hipocykloida wydłużona) otrzymywana jako ślad punktu leżącego w odległości h od środka okręgu o promieniu r, toczącego się po wewnętrznej powierzchni innego, okręgu o promieniu R. Współrzędne punktów hipotrochoidy dane są układem równań:
x=(R-r)\cos(t)+h*\cos\left(\frac{(R-r)*t}{r}\right)\\\\ y=(R-r)\sin(t)-h*\sin\left(\frac{(R-r)*t}{r}\right)
Te same równania dla h>r opisują hipocykloidę wydłużoną, a dla h≤r opisują hipocykloidę skróconą. Zauważmy, że dla h=0 otrzymujemy równanie, opisujące środek okręgu, który toczy się wewnątrz drugiego okręgu. Wykorzystując, tą informację możemy stworzyć animację pokazującą rysowanie hipotrochoidy.

Przykładowe hipotrochoidy
(po lewj hipocykloida wydłużona, po prawej hipocykloida skrócona):
Hipotrochoidy

Rozpatrzmy teraz przypadek drugi, w którym okrąg toczy się po powierzchni zewnętrznej drugiego okręgu. Mamy wówczas do czynienia z epicykloidą, która jest krzywą płaską, kreśloną przez punkt okręgu o promieniu r, który toczy się po powierzchni drugiego okręgu o promieniu R. Jeżeli promienie obu okręgów są równe, to epicykloida jest kardioidą, którą nazywa się niekiedy krzywą sercową. Epicykloida dana jest parametrycznym układem równań:
x=(R+r)\cos(t)-r*\cos\left(\frac{(R+r)*t}{r}\right)\\\\ y=(R+r)\sin(t)-r*\sin\left(\frac{(R+r)*t}{r}\right)

Epicykloida:
Epicykloida

Uogólnieniem epicykloidy jest epitrochoida (epicykloida skrócona oraz epicykloida wydłużona) otrzymywana jako ślad punktu leżącego w odległości h od środka okręgu o promieniu r, toczącego się po zewnętrznej powierzchni innego, okręgu o promieniu R. Współrzędne punktów epitrochoidy dane są układem równań:
x=(R+r)\cos(t)-h*\cos\left(\frac{(R+r)*t}{r}\right)\\\\ y=(R+r)\sin(t)-h*\sin\left(\frac{(R+r)*t}{r}\right)
Generalnie, symetria hipocykloidy lub epicykloidy jak już wspomniałem określona jest przez stosunek długości promieni toczących się po sobie okręgów. Jej kształt zależy też wyraźnie od proporcji odległości od środka okręgu do wybranego punktu kreślącego krzywą a promieniem tego okręgu (h) - wielkość tę nazywamy "mimośrodem". Niektóre krzywe cykliczne mają znaczenie praktyczne, ich kształt mają krzywki napędzające różne mechanizmy.

Przykład w JavaScript:

Po zmianie parametrów, żeby zobaczyć efekt uruchom animację ponownie.
Promień:
Promień toru:
Mimośrodkowość:
Rodzaj:hipotrochoida epitrochoida
Animacja:
Prędkość animacji:

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 3
Tomasz LubińskiJavaScriptFirefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
.js
.js
***** / 1
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 01 września 2012 14:17
Dodaj komentarz