Tarkoituksena olisi tehdä pallojen törmäystä 2D:nä. Ongelma on siinä etten tiedä varmasti miten törmäävän pallon suunta pitäisi laskea törmäyksen jälkeen.
Eli oletetaan että minulla on Pallo1 koordinaateissa (2,4) ja se lähtee liikkeelle kunnes osuu paikallaan olevaan palloon (Pallo2) koordinaateissa (5,7).
Minun käsittääkseni saan laskettua tangetin avulla uuden suunnan Pallo2:lle:
Pallo2_kulma = tan((5-2) / (7-4))
ja ottamalla tuosta sinillä ja kosinilla nopeudet x- ja y-akseleille:
Pallo2x_nopeus = cos(Pallo2_kulma)
Pallo2y_nopeus = sin(Pallo2_kulma)
Pallo2x -= Pallo2x_nopeus * nopeus
Pallo2y -= Pallo2y_nopeus * nopeus
Onkohan tuo päätelty oikein ?
Mitenkähän saisin tuosta sitten suunnan Pallo1:lle? Pitääkö tuosta törmäyskulmasta ottaa projektiokulma joka sitten on se Pallo1:sen uusi suunta? Ja jos pitää ottaa projektiokulma niin miten ihmeessä se otetaan?
Olen tässä koittanut nyt itselleni selvittää tuota asiaa ja tutkinut netistä tutoriaaleja mutta ei tuo nyt vaan aukene minulle.
En ole vielä ottanut huomioon hidastuvaa vauhtia, impulssia jne. vaan lähinnä haluaisin nuo suunnat ensiksi kohdalleen.
https://www.ohjelmointiputka.net/koodivinkit/
Jos tuosta saat jotain tolkkua. Siinä on VB:llä ratkaistu juuri kyseinen ongelma. Tosin on siinä paljon muutakin.
Voit varmaankin olettaa pallojen törmäykset täysin kimmoisiksi. Jos pallojen massat ovat m1 ja m2 sekä pallon 1 nopeus ennen törmäystä v1, törmäyksen jälkeen u1 ja pallon 2 nopeus törmäyksen jälkeen u2, saadaan liike-energian säilyvyyden perusteella m1v1^2=m1u1^2+m2u2^2. Lisäksi liikemäärä säilyy, joten m1v1=m1u1+m2u2. Varmaankin m1, m2 ja v1 tiedetään, joten voit ratkaista näistä kahdesta yhtälöstä muuttujat u1 ja u2. Koska nopeus on vektorisuure, saat samalla kertaa selville pallojen vauhdit ja suunnat.
Anonyymi kirjoitti:
En ole vielä ottanut huomioon hidastuvaa vauhtia, impulssia jne. vaan lähinnä haluaisin nuo suunnat ensiksi kohdalleen.
Kun mietit asiaa tarkemmin, huomaat, että törmäyksen jälkeiset suunnat riippuvat nimenomaan mainitsemistasi asioista, kuten vauhdin hidastumisesta.
Törmäystilanteessa kappaleiden nopeudet voidaan helposti jakaa törmäyspisteen kautta kulkevan tangentin suuntaisiin ja sitä vastaan kohtisuorassa oleviin komponentteihin. Jos kitkaa ei oteta huomioon, eivät tangentin suuntaiset nopeudet muutu. Törmäyksen jälkeiset kohtisuorat komponentit taas voidaan laskea Jaskan:n mainitsemalla tavalla liike-energian ja liikemäärän säilymislakien avulla. Ehkäpä pieni kuva havainnollistaa hieman asiaa.
Edellä kuvatussa tarkastelussahan riittää tietää pallojen nopeudet ja massat oikean tuloksen saavuttamiseksi. Lisäksi tuohon on varsin helppo ympätä jonkinlainen energiahäviö törmäyksessä, jolloin törmäys ei olisi enää täydellisen kimmoisa. Jos sen sijaan halutaan mallintaa myös törmäyksen tangentin suuntaisesti vaikuttavat kitkavoimat, täytyy tarkkaan tulokseen päätymiseksi ottaa huomioon myös pallojen pyörimisnopeudet ja hitausmomentit. Toki tätä voi approksimoida myös karkeasti ilman pyörimisliikkeen simuloimistakin.
Ja tässähän muuten puhutiin koko ajan ympyröistä eikä palloista...
Aihe on jo aika vanha, joten et voi enää vastata siihen.