Бильярд на Qt

Итак... В честь дня космонавтики и по совместительству дня факультета в нашем университете у меня был отличный шанс выиграть немного денег и заодно поучавствовать в конкурсе физических моделистов... Одним из заданий было написать бильярд на Qt (ну на Qt это я уже приукрасил =) У меня получилось следующее.

Рассматривать математико-физическую модель с формулами увы нет настроения, выделю только ключевые моменты:

  1. Все удары кием по шарику центральные, шарик по шарику - как получится, тоесть, более реалистично.
  2. Введено трение об стол.
  3. При взаимодействиях между шариками и шарик/стенка енергия тоже теряется
  4. Использован принцип "очереди" (тоесть наперед просчитаны траектории до соударений)
  5. Управление с помощью мыши - зажать левую кнопку и ударить.
  6. Скорость удара зависит от скорости передвижения указателя мыши.
  7. Скорости после соударений рассчитываются согласно законам сохранения.
  8. Ведется счет (очень примитивно, спешил ведь =))

Не судите строго, упор был сделан на физику, не на красоту, время написания - ограничено; физический движок - более-менее реалистичен (не считая нецентрального удара кием), графика - на qwtplot.

Если кто-то что-то перепишет/использует - буду только рад) Также буду рад, если вы меня об этом известите.

Выглядит это так:

Qt проект: billiard (qwt сконфигурирован под linux)