У нас є полотно заввишки 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 звичайно це тільки начерк і на ідеал жодним чином не претендує, тільки щоб підказати напрямок