Harjoitustyö Hidastuva liike Biljardisimulaatio Tietotekniikka Ammattialan matemaattiset menetelmät Tommi Sukuvaara Nico Hätönen, Joni Toivonen, Tomi Poutiainen INTINU13A6 Arviointi Päiväys Arvosana Opettajan allekirjoitus
SISÄLLYS 1 JOHDANTO... 1 2 TEORIA... 1 2.1 Liikevastusvoimat... 1 2.2 Hidastuvuus... 2 2.3 Nopeus ja matka... 2 2.4 Törmäykset reunoihin... 3 3 DEMO... 3 3.1 Kertoimet ja arvot... 3 3.2 Demon toimintaperiaate... 4 3.3 Käyttöliittymä... 5 4 LOPPUTULOKSET... 5 4.1 Realistisuus... 5 4.2 Puutteita... 6 4.3 Pohdintaa... 6 LÄHTEET... 8
1 JOHDANTO Harjoitustyön aiheena oli tutkia (ja mallintaa) yksittäisen biljardipallon liikettä ja käyttäytymistä biljardipöydällä, hyödyntäen matemaattisia ja fysikaalisia kaavoja. Työ suoritettiin osana Ammattialan matemaattiset menetelmät -kurssia. Lopputuloksena oli mielestämme varsin toimiva, JavaScript-ohjelmointikielellä ohjelmoitu demo. Aihetta rajattiin vielä tarkemmin käsittelemään vain yksittäistä palloa, jolle annetaan alkunopeus sekä lähtökulma. 2 TEORIA Kun biljardipallo lyödään liikkeelle, saa se alkunopeuden v 0. Liiketilassa palloon vaikuttavat liikevastusvoimat jotka aiheuttavat palloon negatiivisen kiihtyvyyden riippuen massasta. 2.1 Liikevastusvoimat Yksittäisen pallon kohdalla liikettä vastustavat voimat ovat kitkavoima F μ sekä ilmanvastusvoima F v. Kitkavoima voidaan yleisesti laskea kaavasta F μ = μ 1 mg (Kaava 1), jossa μ 1 on kappaleen ja pinnan välinen (liuku)kitkakerroin, m on kappaleen massa ja g on vallitseva putoamiskiihtyvyys. (Internet 1) Ilmanvastusvoima taasen lasketaan kaavasta F v = 1 2 ρv2 AC (Kaava 2), jossa ρ on ilman sen hetkinen tiheys, v kappaleen nopeus, A kappaleen pinta-ala kohtisuorassa liikettä kohden ja C on kappaleen niin sanottu muotokerroin. (Internet 2) 1
Kuva 1 (Havainnollistava) vapaakappalekuva pallosta. 2.2 Hidastuvuus Kappaleen hidastuvuus voidaan laskea dynamiikan peruslaista F = ma (Kaava 3) eli voimien summa on massa kertaa kiihtyvyys. (Kirja 1) Yhdistäen kaavat 1 & 2 saadaan kiihtyvyys muotoon a = μ 1 g + 1 2 ρv2 (πr 2 )C (Kaava 4), jossa massat on supistettu pois ja A on korvattu ympyrän pinta-alan kaavalla. 2.3 Nopeus ja matka Kappaleen nopeus tietyn ajan jälkeen voidaan laskea kaavasta v = v 0 + ( at) (Kaava 5), jossa t on kulunut aika. Vaikka kaava koskee tasaisesti muuttuvaa liikettä ja ilmanvastusvoiman suuruus riippuukin kappaleen sen hetkisestä nopeudesta, uskomme sen olevan riittävän hyvä loppunopeuden laskemiseen koska käytimme t:n arvona sovelluksen ruudunpäivitysnopeutta 1 s, joka on todella pieni aika. 60 (Internet 3) Kappaleen ajassa t kulkema matka voidaan laskea kaavalla s = v 0 t + 1 2 at2 (Kaava 6) 2
2.4 Törmäykset reunoihin Törmäykset reunoihin ajattelimme liike-energian kautta. Osa liike-energiasta siirtyy lämpöenergiaksi ja ääneksi. Kun kappale törmää kiinteään tasoon, on kappaleen kimmokerroin / lepokitkakerroin silloin muotoa μ 2 = v 1 v 0 (Kaava 7), jossa siis v 1 on törmäyksen jälkeinen loppunopeus, ja v 0 nopeus ennen törmäystä. Kappaleen liike-energia on muotoa E K = 1 2 mv2 (Kaava 8), jossa m on massa ja v on sen hetkinen nopeus. Koska kappaleen massa ei muutu missään vaiheessa, vaikuttaa liike-energian muutos ainoastaan nopeuteen. (Internet 4 & 5) Tästä päättelemällä saamme loppunopeudeksi siis v 1 = μ 2 v 0. 3 DEMO 3.1 Kertoimet ja arvot Tarvittavat kertoimet, kaavat ja suureet löytyivät Internetistä ja fysiikan kirjoista. Taulukko 1. Laskentaan käytetyt arvot. (Internet 6 & 7) μ 1 0,015 μ 2 0,85 m 0,17kg g 9,81 m s 2 ρ 1,225 kg m 3 r 0,028575m C 0,34 A(πr 2 ) 0,002565207m 2 t 1 60 s 3
Suurin osa arvoista löytyi Internetistä ja lähteet ovat dokumentoitu raportin loppuun. Pöydän mittoina käytimme perinteisen poolipöydän mittoja 2,74m * 1,37m ja käytimme oikeita mittasuhteita myös demossa. JavaScriptin canvas-piirtoalueen kooksi määritimme alkuperäiset mitat kertaa 300px, eli piirtoalueen koko demossa on 822 x 411px. Biljardipallon halkaisija on 57,15mm eli 0,05715m. Suhteutettuna piirtoalueeseen, biljardipallon halkaisijaksi saatiin 16px. (Internet 8) Taulukoidut arvot ovat määritelty ohjelman variables.js -tiedostossa muuttujiin. 3.2 Demon toimintaperiaate Selkokielellä, demo toimii seuraavien vaiheiden mukaisesti. 1. Kysytään käyttäjältä lähtökulma ja alkunopeus. 2. Lasketaan x-akselin suuntainen nopeus ja y-akselin suuntainen nopeus suorakulmaisen kolmion trigonometrian mukaisesti: sin = vastainen kateetti hypotenuusa, cos α = viereinen kateetti hypotenuusa eli hypotenuusan pituudella kun kerrotaan sin tai cos niin saadaan y- akselin suuntainen nopeus ja x-akselin suuntainen nopeus. Kulmat ovat ohjelmassa niin, että nollakulma on x-akselilla oikealle päin ja loput siitä myötäpäivään (esimerkiksi 90 on suoraan alaspäin). Kuva 2 Lähtötilanne. 4
3. Käydään laskemassa v 0 :n hidastuvuus kaavan 4 mukaisesti. 4. Lasketaan loppunopeus v 1 t: n avulla. 5. Kerrotaan laskettu v 1 joko sin :lla (y-akseli) tai cos :lla (x-akseli). 6. Lasketaan vielä tässä ajassa kulkema matka s. 7. Liikutetaan palloa kentällä v x ja v y mukaan. 8. Tarkastellaan, osuuko pallo ruudunpäivityksen aikana joihinkin reunoista. Jos kyllä, lasketaan kaavalla 7 uusi nopeus. 9. Palataan kohtaan 3, jos pallo vielä liikkuu. Kaikki laskenta tapahtuu yhden ruudunpäivityksen aikana. 3.3 Käyttöliittymä Käyttöliittymässä pallo lyödään liikkeelle klikkaamalla hiirellä. Alhaalla olevista liukusäätimistä / tekstiruuduista määritellään lähtökulma ja lähtönopeus. 4 LOPPUTULOKSET 4.1 Realistisuus Käyttämämme kaavat ovat järkeenkäypiä ja tarkistuslaskuja suorittaessa kaikki tulokset ohjelma laski oikein. Kun ohjelmalla lasketaan uusi hidastuvuus, nopeus ja kuljettu matka tallennetaan ne muuttujaan. JavaScriptillä pystytään tulostamaan selaimen konsoliin esimerkiksi näitä muuttujien arvoja, niin voidaan nähdä mikä on kunkin muuttujan arvo loopin suorittamisen jälkeen. Kuva 3 Kuvassa on otanta muuttujien arvosta Chromen JavaScript-konsolista kolmen ensimmäisen laskentakierroksen jälkeen. Lähtönopeutena on käytetty 5 metriä sekunnissa. Alla olevassa taulukossa on taulukoitu ohjelman laskemat arvot ja käsin lasketut arvot. 5
Taulukko 2. Kierros 1 (Ohjelma) 1 (Laskettu) 2 (Ohjelma) 2 (Laskettu) 3 (Ohjelma) 3 (Laskettu) a ( m s 2) v( m s ) s(m) 0,1605051089437 5 0,1605051089437 5.. 0,1604908223451 196 0,1604908223451 19601.. 0,1604765446627 4086 0,1604765446627 4086489 4,99732491485093 7 0,0833110409570 9113 4,99732491485093 0,0833110409570 7.. 9114.. 4,99465006781185 0,0832664581888 2 5659 4,99465006781185 0,0832664581888 21.. 56580610 4,99197545873414 0,8322187938788 328 4,99197545873413 0,0832218793878 982 83266 Käsin lasketut arvot ovat samoja, kuin ohjelmallisesti lasketut. Kaikki suureet vähenevät järkevällä nopeudella ja koska ohjelma jatkaa samaan tapaan alusta loppuun asti, voidaan todeta laskennan toimivan. 4.2 Puutteita Seikkoja, joita emme ottaneet huomioon ovat muun muassa pallon pyörimisliike. Ohjelmoimamme demo simuloi pallon liikettä, kun pallo liukuu kentällä. Todellisuudessa pallo lyönnin jälkeen ensin liukuu jonkin aikaa ja jatkaa lopussa matkaa vierien. Tällöin olisi pitänyt ottaa huomioon mihin kohtaan palloa lyödään, joka aiheuttaa pallolle kulmanopeuden, kulmakiihtyvyyden ja ratanopeuden ja laskea jotenkin kohta, jossa pallo lopettaa liukumisen ja alkaa pyöriä. (Internet 9) Lisäksi törmäystarkastelu olisi mennyt uusiksi, kun törmäys olisi vaikuttanut kulmanopeuteen ja myös muuttanut törmäyksen jälkeistä kulmaa. Näitä emme ottaneet huomioon siksi, koska tajusimme sen vasta loppuvaiheessa ja ongelmia oli runsaasti jo nykyisen ohjelmakoodin kanssa. Keskityimme ohjelmoimaan toimivan, liukuvaa palloa havainnollistavan demon. 4.3 Pohdintaa Työvaiheita oli monia ja kaavat eivät olleet tuoreessa muistissa. Oppimiskäyrä oli melkoisen jyrkkä. Ensimmäiseksi ajattelimme liikekitkan olevan ainoa liikettä vastustava voima. Laskimme liikevastusvoiman F μ ja tämän perusteella kaavalla 3 hidastuvuuden pallolle. Esimerkiksi 10 m alkunopeudella ja pelkällä kitkavoimalla kestäisi kaavan 4 mukaan pallolla noin 68 sekuntia ennen kuin s se 6
pysähtyy, joka on epärealistinen tulos (Internet 10). Tästä päättelimme, että palloon on pakko vaikuttaa muitakin voimia kuin kitkavoima ja totesimme ilmanvastuksen olevan toinen merkittävä liikevastusvoima. Työtunteja kokonaisuudessaan kertyi helposti yli 40. Tästä ehkä noin puolet kului tarvittavien kaavojen selvitykseen sekä niiden käyttämiseen ja puolet ohjelmointityöhön. Ongelmia tuli vastaan runsaasti, milloin ohjelmoinnin kanssa, milloin kaavojen kanssa. Mittasuhteet olivat myös alussa vääriä ja kaiken muun ollessa kunnossa, emme osanneet näihin kiinnittää alussa huomiota. Tästä syystä pallo liikkui väärin ja aiheutti virhettä laskentaan. Ilmanvastuksen laskeminen oli melko vaativaa ja koska se riippuu kappaleen sen hetkisestä nopeudesta, piti kehittää tapa laskea sitä mahdollisimman useasti. Vasta työn loppuvaiheessa tajusimme törmäysten vaikuttavan oleellisesti pallon nopeuteen. Alun perin olimme ajatelleet törmäyksen olevan melkein elastinen (kimmoisa), mutta todellisuudessa pöydästä riippuen törmäys syö 10% 30% liike-energiasta. (Internet 5) Mielestämme demo on realistinen ja kuvaa pallon liikettä hyvin silloin, kun pallo liukuu pöydällä. Tarkistuslaskuja on suoritettu useita ja kaavoja testattu ja ne tuntuvat järkeviltä. Aihe oli mielenkiintoinen ja opimme hyödyntämään fysiikan kaavoja tosielämässä. Projekti oli haastava. Demoa voi kokeilla osoitteesta http://mustakarhu.ddns.net/billiardsimulator/. Demo toimii parhaiten Chromella tai Firefoxilla. 7
LÄHTEET Internet-lähteet /1/ Wikipedia.org, kitkavoima. http://fi.wikipedia.org/wiki/kitka /2/ Wikipedia.org, ilmanvastus http://fi.wikipedia.org/wiki/ilmanvastus /3/ Wikipedia.org, tasaisesti kiihtyvä liike http://fi.wikipedia.org/wiki/tasaisesti_kiihtyv%c3%a4_liike /4/ Physics.tutorvista.com, lepokitkakerroin, kimmoisuus http://physics.tutorvista.com/momentum/elastic-collision.html /5/ Physicsforums.com, lepokitkakerroin / kimmokerroin. /6/ Biljardiin liittyviä kertoimia ja arvoja http://billiards.colostate.edu/threads/physics.html /7/ Kappaleiden muotokertoimia http://www.saunalahti.fi/~dvinci/osa2.html /8/ Wikipedia.org, pöydän koko & pallon massa https://en.wikipedia.org/wiki/pool_%28cue_sports%29 /9/ Real World Physics Problems, yleisesti biljardista ja fysiikasta. http://www.real-world-physics-problems.com/physics-of-billiards.html /10/ Wolfram Alpha, esimerkkilasku. https://www.physicsforums.com/threads/what-is-the-coefficient-of-restitution.763082/ http://www.wolframalpha.com/input/?i=0+%3d+10+- +%280.14715+*+t%29 8
/11/ Demo http://mustakarhu.ddns.net/billiardsimulator/ Kirjalliset lähteet /1/ MAOL-taulukkokirja 9