Download: --------------- http://n.ethz.ch/student/crobi/download/phys.zip Requirements: -------------------- Windows, Pentium 4 compatible CPU, OpenGL compatible graphics. Usage (phystest): ------------------------ Press +, - , * , / to change gravity Press R to toggle rendering Press M to toggle advanced rendering Right-click to apply an impulse to the first body Drag using the left mouse button to change the force applied to the first body Usage (editor): ------------------- Press + or - to adjust the grid. It it doesnt work, right-click first into the grid (otherwise some window element will receive the key strokes). Click "Add New Polygon" to add a polygon to the model. You may have to manually select the new polygon in the list. The current polygon is rendered in red. Left click to add a point to the current polygon. The editor will compute the convex hull as polygons have to be convex. Points will always be snapped to the grid. Click "Rescale" to scale the model by the factor given below. Click "Recompute stuff" to move the centre of mass to the origin and compute smalles enclosing circles as bounding circles. Will be also done upon saving the model. Use "Camera X Y" or "Camera Z" to zoom and pan. If you design models for the phystest application, make sure they have a radius of approximately 20 units, otherwise they won't fit into the bounding geometry. Phystest will load geometry1.xml and geometry2.xml. Mass and moment of inertia are computed automatically by phystest (assuming uniform density). Elasticity and friction coefficients are hardcoded into phystest. Technical info: --------------------- Broad phase collision detection: Bodies sorted (insertion sort) by left point of the interval given by projecting the body onto a specified axis. Broad phase collision detection: Bounding circles for bodies and their polygons (you can see them in the editor) Collision detection: Separating axis theorem Contact handling and Friction: See "Nonconvex rigid bodies with stacking" by Guendelman, Bridson and Fedkiw Programming language: C++ Used libraries: boost::serialization, tvmet, opengl, glut, glgui (for the editor) Author: ---------- Robert Carnecky crobi@student.ethz.ch