Відскік м'яча від землі - stack overflow російською

У нас є полотно заввишки my і шириною mx. на якому ми малюємо коло з центром в точці (x; y) радіуса r. на відстані h "від землі". (H = my - y).

Початкова швидкість падіння окружності вниз дорівнює 0. Будемо вважати, що маса окружності прямо пропорційна радіусу, тобто маса m = r.

Кожен кадр ми розраховуємо координати кола і потім прорисовуємо її. Припустимо, в більш складному випадку окружність може падати не строго вниз, а під кутом і з якоюсь початковою швидкістю.

Нехай x__ і y__ - швидкості (проекції швидкостей) на осі Ох і Оу відповідно. Нехай g = 9.8. Кожен крок я буду змінювати координати кульки

Вводжу вектор, тому що можливо в майбутньому зроблю анімацію більш складною.

Питання: Що робити, коли м'яч прилетів на землю? Як перенаправити вектор, щоб куля відскочив назад вгору? Як прив'язати опір повітря і масу кульки (щоб великий м'яч летів швидше або повільніше)? Як зробити так, щоб куля врешті-решт зупинився? Бажано зробити все якомога ближче до справжніх законам фізики.

Куди копати? Будь ласка, роз'ясніть детально це питання. І що можна почитати на цю тему, щоб я потім не створював питання про те, як зробити те ж саме з якоюсь неправильною фігурою (і т.д.)?

заданий 16 Жовтня '13 в 10:04

не більш, ніж зазвичай лякають, коли дають купу посилань на теорію. Я майже все формули привів. UPD. і коефіцієнти теж, до речі! UPDD: людина просила ближче до реальної фізики. ^ ___ ^ Ще можна силу кулона при електризації врахувати, турбулентності, підйом теплого повітря, що нагрівається від тертя, зміна коефіцієнта пружності при деформації м'яча, втрати на внутрішнє тертя. - knes 16 Жовтня '13 о 10:46

круто весь світ описати напевно і знати при цьому всю фізику та ще й математику, але на щастя, а можливо і ні, досить створювати ілюзії тих чи інших проявів за допомогою програмінг бо це і є симулятор (тобіш ілюзія). і якщо немає готового движка (яких вже достатньо) яби це вирішив функцією падіння з ефектом рикошету. тоесть пишемо функцію допустимо

func (int x, int y, int x_destination, int y_destination, int speed)

і алгоритм приблизно такий:

при зіткненні з землею вектор на

+-180градусов, якщо рух на 90градусов (перпендикулярно землі)

+90градусів, якщо точка відліку (старту) більше точки досягнення землі по осі Х і У

-90градусів, якщо точка відліку (старту) менше точки досягнення землі по осі Х і більше по осі У

зменшуємо швидкість і міняємо x_destination, y_destination допустимо на відрізок 1/5 від початкового при досягненні нової точки призначення на + -180градусов і знову до землі і так поки швидкість перевищує допустимий 1 звичайно це тільки начерк і на ідеал жодним чином не претендує, тільки щоб підказати напрямок

Схожі статті