utorok 20. januára 2009

Epicykloidy a hypocykloidy

V diskusii k minulému príspevku Rado, okrem iného, pomenoval kategóriu kriviek, do ktorej patrí aj naša kardioida - hlavná hrdinka nášho videa. Presnejšie spomenul, že epicykloidy sú krivky, ktoré sledujú fixný bod na kružnici valiacej sa po inej kružnici. Hypocykloidy zas popisujú dráhu fixného bodu na kružnici, ktorá sa valí vnútri inej kružnice.

Toto inšpiratívne poučenie ma popchlo k tomu, aby som svoj programík dokončil tak, že vie vykresľovať aj epi- aj hypocykloidy. Ak sa chcete trochu pobaviť, stiahnuť si ho môžete tu.


Poznámka: r2 je polomer valiacej sa kružnice, r1 je polomer statickej kružnice.

Poznámka 2: 21.1. vychádza najnovšia verzia, podporuje export obrázkov, viacnásobné otáčanie valiacej sa kružnice a takisto zmenu pozície fixného bodu - môže sa nachádzať bližšie k stredu rotujúcej kružnice, alebo aj celkom mimo nej... Link na program platí ten istý.

10 komentárov:

Radoslav Harman povedal(a)...

Spustil som si ten program a najviac ma zaujala hypocykloida typu "r2=2*r1"; chvíľu mi trvalo, pokým som sa zorientoval :-) Mimochodom, tvar tejto "hypocykloidy" sa veľmi podobá na polovicu kardioidy. Keby sa to nechalo bežať dvakrát dlhšie, vykreslí sa aj týmto spôsobom kardioida?

Inak oveľa krajšie obrázky (rôzne mašle a klbká) by sa dali nakresliť vtedy, keby bolo možné zadať aj väčší počet otáčok...

rasťo povedal(a)...

Rado: Vďaka za všetky skvelé komentáre, nechal som sa poučiť a trochu som to dorobil, vidím, že ste výborný tester. Ďakujem!

Takže už sa kružnica točí pekne dlho (zatiaľ do 180 otočení). Naozaj takto vznikajú pekné obrázky - preto som ešte prirobil aj funkciu export obrázka. Po kliknutí sa uloží bitmapa s aktuálnym obrázkom (dá sa klikať aj počas bežiacej animácie).

Radoslav Harman povedal(a)...

Všimol som si, že aj pomocou časti programu "epicykloidy" sa dajú vykreslovať hypocyklidy a to keď zadáš záporný polomer :-)

Viem, že máš teraz cez skúškové veľa dôležitejšej práce, ale ak by si chcel v budúcnosti svoj program ešte trochu ozvláštniť, tak by si mohol dať voľbu ešte parametra určujúceho kde na polomere je ten bod, ktorého stopu sledujeme. Teraz je výlučne len na konci toho polomeru valiacej sa kružnice, ale mohol by byť aj niekde v strede. Potom by výsledné krivky mohli obsahovať aj povedzme maličké "slučky".

rasťo povedal(a)...

Rado: Ďakujem za ďalší nápad, znie to dobre, myslím, že by s tým nemalo byť veľa roboty, skúsim to dorobiť počas najbližších voľných chvíľ medzi diplomovkou a skúškami:-)

Inak, snažím sa predstaviť si, ako by tá krivka vyzerala, keby bol fixný bod na rotujúcej kružnici bližšie k stredu, a zdá sa mi, že tie slučky by vedeli robiť len hypocykloidy. Pokiaľ by sa valila kružnica zvonku, vznikali by len plytšie oblúčiky (samozrejme, pokiaľ sa nejedná o záporné polomery alebo netypické prípady pomerov polomerov...).

Epicykloidy by situáciu so slučkami ale tiež mohli zvládnuť, keby fixný bod "pretŕčal", teda, bol by od stredu valiacej sa kružnice ďalej než jej polomer - takéto slučky robia prečnievajúce disky na kolesách vlaku...

Radoslav Harman povedal(a)...

Presne tak; dobre by bolo dať možnosť ten parameter voliť tak, aby príslušný bod mohol aj "pretŕčať". To s tými kolesami vlaku je pravda; myslím, že mi to spomínal otec (on učí matematiku na strojníckej a o cykloidách vie teda z pochopiteľných dôvodov oveľa viac ako ja).

rasťo povedal(a)...

Tak som ten program prerobil, a už sa dá meniť aj poloha fixného bodu - škála tvarov sa nám takto pekne rozšírila - veľmi pekne vyzerá napríklad "nafúknutý trojuholník", ktorý vznikne keď v kružnici rotuje kružnica s tretinovým polomerom, a sledujeme bod, ktorý sa nachádza bližšie ku stredu (menej než 0,5 násobok polomeru rotujúcej kružnice).

Prekvapením (ale iba pre tých, čo nemali projektívnu geometriu s doc. Solčanom :-) môže byť aj elipsa, ktorá vzniká keď sa sleduje bod pretŕčajúci z kružnice valiacej sa vo vnútri dvojnásobnej kružnice, pokiaľ fixujeme bod vzdialený od stredu rotujúcej kružnice viac než o jej polomer (ľubovoľne viac).

Strašne pekné na tom celom je, že táto obrovská škála napohľad pomerne rôznorodých tvarov vzniká len jednoduchým nastavovaním štyroch konštant v dvoch parametrických rovniciach! (dva polomery, vzdialenosť od stredu, znamienka podľa toho, či sa točí vnútri alebo vonku.)

rasťo povedal(a)...

Už len upresním terminológiu. Keď rotuje kružnica vo väčšej kružnici, krivka vznikajúca sledovaním fixného bodu vnútri rotujúceho kruhu sa volá hypotrochoida. Rovnako sa volá táto krivka aj keď fixný bod "pretŕča". Je to teda o niečo všeobecnejší pojem, aký sme tu používali doteraz - hypocykloida (keď sledujeme bod na kružnici). Opravím sa s tou elipsou - tá vzniká nielen keď fixný bod pretŕča, ale aj keď je vo vnútri kruhu rotujúceho vo väčšej kružnici s dvojnásobným polomerom.

Epitrochoida je analogicky krivka, ktorá vzniká keď sa kružnica valí zvonku a sledujeme "pretŕčajúci" bod, alebo bod v rotujúcom kruhu.

Radoslav Harman povedal(a)...

Trochu som sa s tým programíkom pohral a je to celkom zábava. Inak začínam uvažovať, že niekedy v budúcnosti zorganizujem čosi ako súťaž o najkrajší matematický obrázok vyrobený vlastným programíkom.

rasťo povedal(a)...

Konečne som našiel linku na legendárnu hračku, o ktorej nám toľko rozprávali docenti Božek a Solčan.

Inspiro.

Asi sa už dnes v Jablonci nad Nisou táto hračka nevyrába. Každopádne myšlienka neupadla do zabudnutia a s novým sviežim marketingom sa dá kúpiť na Think Geek za necelých deväť dolárov...

Radoslav Harman povedal(a)...

Jasné, inspiro. Mal som ho pred nejakými 25 rokmi :) Škoda, že sa už nevyrába, hneď by som ho kúpil pre dcéru (a aj pre seba). Ten Think Geek vyzerá byť slabší.