$Date: 2005/10/23 16:34:13 $
$Revision: 1.22 $
-- copies a collidable
-- angle in radian, in which the bounding volume is rotated (0 is default), in [0 2pi]
-- Center of the collidable objects circumcircle, also known as the circumcenter
-- This option may be used, in order to know, who holds the collidable primitive
-- true, if the object should be ignored from collision detection.
-- Please note, that this should only be used temporarily, if you don't want
-- to remove the object from the detector. If you wish not to use this
-- object anymore, please remove it from the detector.
-- the center position since the last movement
-- the logger object
-- (From EM_LOGGING)
-- Circumcircle radius of the collidable object, used for rough collision detection.
-- This is the maximal distance of any part of the object to center
-- a orthogan rectangle for example is not rotatable
-- Draw Current to a_surface
-- The screen clipping is set with set_draw_clipping
-- moves the center by an_x, a_y
-- Process all changes to the collidable.
-- recomputes the radius and resets the value
-- Rotates an object by a certain angle. positive means clockwise, because the y-axis of the screen is inverted!
-- rotates around center
-- Rotates an object by a certain angle. positive means clockwise, because the y-axis of the screen is inverted!
-- rotates around a_center
-- Rotates an object to a certain angle around the center.
-- the angle 0 is the angle in which the bounding volume was created and backed up
-- the backed up coordinates will always be used to generate the new ones, to
-- prevent deformation after a lot of rotations.
-- Rotates an object to a certain angle around a_center.
-- the angle 0 is the angle in which the bounding volume was created and backed up
-- the backed up coordinates will always be used to generate the new ones, to
-- prevent deformation after a lot of rotations.
-- also draws the circumcircle of the collidable
-- sets the circumcircle color
-- This sets the clipping for the part to draw
-- The first argument is the top left corner of the screen.
-- for example if we want an object, that is situated at (5000, 1000), the
-- clipping should be moved to an appropriate position e.g. (4800, 800)
-- All objects outside of the clipping will not be displayed
-- sets if the object is rotatable
-- sets the center to (x,y)
-- search of collisions in between steps.
-- Performance: O (2^d * collision_check_time)
-- returns if they ever collide and the first time of collision found.
-- Rough collision detection of circumcircle
-- searches the first collision point of 2 collidables with search depth d.
-- returns a pair, if no collision was found, returns [false, 0]
-- otherwise true and the time at which the first collision happened, between 0 and 1
-- returns the average collision point and tangential direction of the 2 collidable objects current and a_collidable
-- in case of concave objects (compositions of convex objects) a collision may be returned for each element of the
-- composition. The same 2 collidables can have multiple collision points.
-- computes the maximal distance to a certain position.
-- this is used to compute the radius of compositions of collidables
-- area of the collidable in pixel^2
-- computes and returns the center of mass
-- checks if 2 collidables collided at time t
-- returns an equivalent copy of the collidable (just the position and borders)
-- the top left corner. for more details see set_draw_clipping
-- recursive search for the first collision point (if any)
-- returns the time of the first collision (0 < time < 1)
-- returns 0, if no collision was found
-- recursive search of collision points. This function is called by collides_with_depth
-- requires the collidables to collide at the end (b=1) as a precondition (not tested)
-- true, if the circumcircle should be drawn
-- color of the circumcircle
-- true, if the collidable should be drawn filled
-- turns a bounding area TO a certain angle. this will be called from rotate_to or rotate_by
-- turns a bounding area TO a certain angle around a given center. this will be called from rotate_to or rotate_by
-- the zoom factor from the clipping point
Objects that should be detected by the collision detector EM_COLLISION_DETECTOR
have to inherit from EM_COLLIDABLE
The implemented collidables are
EM_CIRCLE_COLLIDABLE
EM_RECTANGLE_COLLIDABLE
EM_POLYGON_COLLIDABLE
EM_COLLIDABLE_COMPOSITION