Siema!
Piszę sobie udziwnionego bilarda. Mam już odbicia normalnych bil. Wszystko działa ładnie tylko teraz chciałem zacząć to udziwnianie. Czytałem już sporo o odbiciach sprężystych, zasadach zachowania energii ale średni mi to wychodzi. Chodzi mi ogolnie o to żeby bila miały różne masy. Wiem że po zderzeniu zachowują się inaczej masy o rożnych masach tylko jak?
- uwzglednij sile tarcia, ktore zalezy od nacisku na podloze (masy)
- przy odbiciu uwzglednij ze np a=func(k*m) energii sie pochlania, czyli predkosc zmienia sie do (1-a)*v
funkcja func powinna zwracac wynik w zakresie od 0-1 czyli np cos w stylu:
float func(float x)
{
return atan(x/20.0)/(M_PI)+0.5; // M_PI - chyba tak sie ta stala symbolizujaca PI nazywala w math.h
}
funkcje musisz dobrac ogladajac rezultaty, nie wiem czy akurat ta bedzie wygladala rzeczywiscie
zasada zachowania pędu?
teoretycznie tak, ale w praktyce jak się rzuci lekką kulką to najczęściej dużo mniej energii straci niż lekka, jednak nie wiem czy to bardziej wina rodzaju materiału czy masy
Ale gdybym chciał żeby energia się nie wytracała. tylko raz puszczona kulka porusza się cały czas z taką samą prędkością i po uderzeniu nie wpływa to na prędkość bili
Wzory z fizyki na zachowanię pędu i energii.
Czy mają być rzeczywiste tzn. są choć trochę elastyczne? Jeżeli tak to musisz włączyć wzory na elastyczność ala przerobione wzory na sprężynę(rozciąganie i ściskanie, materiałoznastwo). Najlepiej podzielić symulację na kwanty czasu np. 0.05 s(20k/s) i w niej dla każdej bili można matematycznie sprawdzić czy się nie zderzą i w zależności od tego coś zmienić. Ogólnie napisanie dobrego symulatora jest całkiem trudne,