Úkolem je implementovat jednoduchou fyzikální simulaci ve 3D. Kuličky pohybující se v homogenním gravitačním poli a odrážející se od průhledných stěn a od sebe navzájem.
Koncepce: bude potřeba promyslet a implementovat následující komponenty:
Základem poslouží projekt 058marbles z repository
grcis.
Je připravena aplikace se základem pro realtime simulaci na CPU a zobrazování pomocí
OpenGL.
Pro implementaci potřebných algoritmů budete modifikovat předem založené
třídy (všechny naleznete ve zdrojovém souboru Marbles.cs):
Náměty: o dokonale pružném rázu nebo nepružném rázu se můžete dočíst v každé učebnici mechaniky nebo např. na Wikipedii (sledujte i odkazy). Základy reakce na náraz jsou např. v tomto článečku. Předpokládá se, že si o problematice sami něco nastudujete!
Technicky: fyzikální simulace světa se spouští v Idle() proceduře, reakce na
události uživatele a zobrazování v klasickém frameworku WinForms (překreslování - reakce na pravidelně
vyvolávanou událost Paint()).
Pohyb kamery: podobně jako v úloze 056 je možné naprogramovat
nějaké chytřejší hýbání kamerou. Modifikovaný soubor Avatar.cs byl též přidán do projektu
058marbles, můžete modifikovat a odevzdat i jej. Pozor, některé metody a koncepty byly mírně
pozměněny proti návodu.
Bonusy: dynamicky přidávané kuličky (mohou naopak i zanikat), složitější geometrie kolizní scény, otáčení kuliček a tření, realističtější nedokonale-pružný ráz, interaktivní prohlížení simulace (otáčení kamery), alternativní zajímavé gravitační pole (a la "Angry Birds Space")..
TERMÍN: do 28. 2. 2014
BODY: 10 až 20 bodů
PROJEKT: 058marbles
ZDROJOVÝ SOUBOR: Marbles.cs, případně též Avatar.cs
Copyright (C) 2012-2013 J.Pelikán,
last change: $Date: 2014-10-03 15:44:39 +0200 (Fri, 03 Oct 2014) $
Send comments/requests to
pepca.at.cgg.mff.cuni.cz