collision handling: detection and response

Post on 03-Jan-2016

59 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Collision handling: detection and response. CSE 3541 Matt Boggus. Collision handling overview. Point collision detection Line segment and ray collision detection Polyhedron-polyhedron collision detection Bounding volume test Vertex inside polyhedron test Concave case - PowerPoint PPT Presentation

TRANSCRIPT

Collision handling:detection and response

CSE 3541Matt Boggus

Collision handling overview

Point collision detectionLine segment and ray collision detectionPolyhedron-polyhedron collision detection

Bounding volume testVertex inside polyhedron test

Concave caseConvex case

Edge-face intersection test

Kinematic response

Penalty method

detection

response

Geometric modeling primitives

• Point

• Line segment

• Polygon

Terminology – convex and concave polygons

Convex and concave – line test

Convex and concave – interior angles

Polygon triangulationsplit into a set of convex polygons

Types of equations

• Explicit y = f(x)– Ex: y = mx + b

• Implicit f(x,y) = 0– Ex: x2 + y2 – 1 = 0– Given values for (x,y), say x = a and y = b, compute f(a,b) = c

• c > 0, then (a,b) is “outside” shape f• c = 0, then (a,b) is on the boundary/surface of shape f• c < 0, then (a,b) is “inside” shape f

• Parametric form (x,y) = (f(u),g(u))– Ex: x = f(t) = r cos (t) , y = g(t) = r sin (t)– Given any value for t parameter, compute a point (x,y)

Parametric line equation• P(t) = P0 + t V– P0 is point on line– V is direction (or slope) of line– On line segment with P1, t ranges from (0,1)

• x = P0.x + t * (P1 – P0).x

• y = P0.y + t * (P1 – P0).y

Point on a line segment• Given (x,y), is it on a line segment (P1 to P0)?

• x = P0.x + tx * (P1 – P0).x

• y = P0.y + ty * (P1 – P0).y

• Plug in x, y, P0, P1, solve for tx and ty

• On the segment if 0 ≤ tx = ty ≤ 1

Examples

• P0 = (0,0)

• P1 = (1,1)

• P = (0.5, 0.5)• P = (-1, -1)• P = (2, 2)• P = (5, 0)

Line intersection – two equations

• Pa = P0 + ta (P1 – P0)

• Pb = P2 + tb (P3 – P2)

• Set them equal, solve for ta and tb

– Note that these are vector equations, not scalars

• Line segment intersection if – 0 <= ta <= 1, and

– 0 <= tb <= 1

Line intersection – visual example

Point in polygon – ray test

Ray test special cases

Point in convex polygon

(y - y0) (x1 - x0) - (x - x0) (y1 - y0)

> 0, point is to the left of the line< 0, point is to the right of the line= 0, point is on the line

Point in convex polygon

(y - y0) (x1 - x0) - (x - x0) (y1 - y0) For (3,1):(1)(5) – (3)(0) = 5

For (3,0):(0)(5) – (3)(0) = 0

For (3,-1):(-1)(5) – (3)(0) = -5

Polygon Intersection

Contained vertex Intersecting edges

Polygon intersection – vertex + edges

Collision detection: point-ground plane

0y

0y

0y

p = (x, y, z)

Surface/Polygon normals

Images from http://en.wikipedia.org/wiki/Normal_(geometry)

Collision detection: point-plane

dpNdczbyaxpE )(

0)( pE

0)( pE

0)( pEN

N = (a, b, c)

p = (x, y, z)

Terms:p = pointN = normal vectorD = distance from origin

Collision detection: time of impact

2 optionsConsider collision at next time stepCompute fractional time at which collision actually occurred

Tradeoff: accuracy v. complexity

P(ti)

P(ti+1)

3D object collision detection

Collision detection: polyhedra

• Order tests according to computational complexity and power of detection

2. test for vertex of one object inside of other object

1. test bounding volumes for overlap

3. test for edge of one object intersecting face of other object

Polygon and polyhedra complexity

How many edges? How many points?

Bounding objects

• Sphere

• Axis aligned bounding box

• Oriented bounding box

Bounding volume construction

• Given a set of points as input, can we automatically create bounding volumes

– Axis aligned bounding box

– Sphere

– Convex hull

Axis aligned bounding box

Axis aligned bounding box

Bounding sphere

Bounding sphere

Bounding sphere

Bounding sphere

Convex HullBest fit convex polyhedron to concave polyhedron but takes some (one-time) computation

1. Find highest vertex, V12. Find remaining vertex that minimizes angle

with horizontal plane through point. Call edge L3. Form plane with this edge and horizontal line

perpendicular to L at V14. Find remaining vertex that for triangle that

minimizes angle with this plane. Add this triangle to convex hull, mark edges as unmatched

5. For each unmatched edge, find remaining vertex that minimizes angle with the plane of the edge’s triangle

Convex hull

Convex hull

Convex hull

Convex hull

Convex hull

Convex hull

Convex hull

Bounding SlabsFor better fit bounding polyhedron: use arbitrary (user-specified) collection of bounding plane-pairs

Is a vertex between each pair?

12 dPNd

Sphere vs. Sphere

Compare distance (p1,p2) to r1+r2

distance(p1,p2)2 to (r1 + r2)2

AABB vs. AABB

AABB vs. AABB

Sphere vs. AABB

Sphere vs. AABB – clamping

Sphere vs. AABB – closest point

Collision detection: swept volumeTime & relative direction of travel sweeps out a volumeOnly tractable in simple cases (e.g. linear translation)

If part of an object is in the volume, it was intersected by object

Collision detection: polyhedra

2. test for vertex of one object inside of other object

1. test bounding volumes for overlap

3. test for edge of one object intersecting face of other object

Collision detection: polyhedra

Intersection = NOFor each vertex, V, of object A

if (V is inside of B) intersection = YESFor each vertex, V, of object B

if (V is inside of A) intersection = YES

A vertex is inside a convex polyhedron if it’s on the ‘inside’ side of all faces

A vertex is inside a cancave polyhedron if a semi-infinite ray from the vertex intersects an odd number of faces

Collision detection: polyhedra

Edge intersection face testFinds all polyhedral intersections,but is the most expensive test:for all faces (i) for all edges (j) test face i for intersection with edge j

If vertices of edges are on opposite side of plane of faceCalculate intersection of edge with planeDetermine if that point of intersection is inside the face

Collision detection speedup

Particle collision detection loop

ArrayList Particles = new ArrayList();Particle p;Particles.Add(p);…

void HandleAllParticleCollisions(){for(int i=0; i < Particles.Count; i++){

for(int j ) {// test Particles i and j for collision

}}

}

=i+1 j < Particles.Count; j++

Collision detection speedup

• Two approaches

– Bound the object

– Bound the space the object is contained in

Hierarchical bounding volumes

Approximating polyhedra with spheres for time-critical collision detection, by Philip M. Hubbard

HBV example

HBV example

HBV example

Spatial subdivision – grid (quadtrees and octrees)

Spatial subdivision – binary space partitioning

Collision response

Collisions: physics review

• Momentum• In a closed system, momentum is conserved

• After a collision, the sum of all momentums is the same as the sum of all momentum before the collision

mvp

''vmmvp

Collision typesElastic collisions – no loss of kinetic energy (e.g. deformations, heat)

Inelastic collisions – loss of kinetic energy

2

2

1mvE Kinetic energy

Elastic collision with stationary object: horizontal and vertical walls/planes

• For vertical wall/boundary– Negate x component of

velocity– Preserve y component of

velocity

• Ex: v0 = (3,-3) ; v = (-3,-3) • For horizontal

walls/boundaries– Preserve x– Negate y

Elastic collision with stationary object: angled walls/planes

• Still split velocity vector into components– Now with respect to the normal

(n) of the wall

• u = (v * n / n * n) n– Note: * is dot product– Vector/direction is parallel to n– Scalar/magnitude is in opposite

direction of n; (v * n) < 0

• w = v – u• Reflected velocity: v’ = w – u

Elastic collision with movable object

Inelastic Collisions

Objects stick together,momentum is conserved

Coefficient of restitution ratio of velocities before and after collision (dampen the resulting velocity)

Collision response: damped

Damping factor = 0.8

Collision response – penalty method

Collision response: penalty

Additional issues

• Adding physics for rotation• Handling multiple collisions

• Resting contact

top related