introduction to gjk - kent state universityruttan/gameengines/lectures/gjk1.pdf · 2016. 2. 22. ·...

37
Computing and Software Department, McMaster University Introduction to GJK John McCutchan November 9, 2006 Mccutchan: Introduction to GJK(slide 1), 1

Upload: others

Post on 23-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Computing and Software Department, McMaster University

Introduction to GJK

John McCutchan

November 9, 2006

Mccutchan: Introduction to GJK(slide 1), 1

Page 2: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Introduction

◮ Introduction to GJK

◮ Terminology

◮ Algorithm in detail

◮ Example

◮ Minkowski Difference (GJK with two convex objects)

◮ Polyhedra Support Function

◮ Sphere Support Function

◮ Cylinder Support Function

◮ Transformation Support Function

◮ Computing P of minimum norm in CH(Q) and reducing Q

◮ References

Mccutchan: Introduction to GJK(slide 2), 2

Page 3: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Introduction to GJK

Given two convex shapes

◮ Computes distance d

◮ Can also compute closest pair of points PA and PB

Mccutchan: Introduction to GJK(slide 3), 3

Page 4: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Terminology – Support Point

Supporting (extreme) point P for direction d returned by supportmapping function Support(d)

Mccutchan: Introduction to GJK(slide 4), 4

Page 5: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Terminology – Simplex

Simplex

Mccutchan: Introduction to GJK(slide 5), 5

Page 6: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Terminology – Convex Hull

Mccutchan: Introduction to GJK(slide 6), 6

Page 7: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Algorithm in detail

◮ 1. Initialize simplex set Q with up to d+1 points from C (in ddimensions)

◮ 2. Compute point P of minimum norm in CH(Q)

◮ 3. If P is the origin, exit; return 0.0;

◮ 4. Reduce Q to the smallest subset Q’ of Q, such that P inCH(Q’)

◮ 5. Let V = Support(-P)

◮ 6. If V no more extreme in direction -P than P itself, exit;return length(P)

◮ 7. Add V to Q. Go to step 2

Mccutchan: Introduction to GJK(slide 7), 7

Page 8: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 1/10

Input: Convex shape C

Mccutchan: Introduction to GJK(slide 8), 8

Page 9: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 2/10

1. Initialize simplex set Q with up to d+1 points from C (in ddimensions)Q = [Q1,Q0]

Mccutchan: Introduction to GJK(slide 9), 9

Page 10: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 3/10

2. Compute point P of minimum norm in CH(Q)

Mccutchan: Introduction to GJK(slide 10), 10

Page 11: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 4/10

3. If P is the origin, exit; return 0.0;4. Reduce Q to the smallest subset Q’ of Q, such that P in CH(Q’)Q = [Q1,Q0]

Mccutchan: Introduction to GJK(slide 11), 11

Page 12: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 5/10

5. Let V = Support(-P)

Mccutchan: Introduction to GJK(slide 12), 12

Page 13: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 6/10

6. If V no more extreme in direction -P than P itself, exit; returnlength(P)7. Add V to Q, go to step 2Q = [Q1,Q0,V ]

Mccutchan: Introduction to GJK(slide 13), 13

Page 14: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 7/10

2. Compute point P of minimum norm in CH(Q)Q = [Q1,Q0,V ]

Mccutchan: Introduction to GJK(slide 14), 14

Page 15: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 8/10

3. If P is the origin, exit; return 0.0;4. Reduce Q to the smallest subset Q’ of Q, such that P in CH(Q’)Q = [Q3]

Mccutchan: Introduction to GJK(slide 15), 15

Page 16: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 9/10

5. Let V = Support(-P)

Mccutchan: Introduction to GJK(slide 16), 16

Page 17: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Example 10/10

6. If V no more extreme in direction -P than P itself, exit; returnlength(P)

Mccutchan: Introduction to GJK(slide 17), 17

Page 18: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Minkowski Difference (GJK with two convex objects)

◮ Problem: How do we handle two convex objects, A and B?

◮ Solution: Use Minkowski Difference of A and B.

Mccutchan: Introduction to GJK(slide 18), 18

Page 19: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Minkowski Sum

Mccutchan: Introduction to GJK(slide 19), 19

Page 20: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Minkowski Sum

MinkowskiSum(A,B) = a + b : a ∈ A, b ∈ B

MinkowskiDifference(A,B) = MinkowskiSum(A,−B)MinkowskiDifference(A,B) = a − b : a ∈ A, b ∈ B

Mccutchan: Introduction to GJK(slide 20), 20

Page 21: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Minkowski Difference◮ What happens to points in A and B that are overlapping when

you take the minkowski difference?◮ They are mapped to the origin.

Mccutchan: Introduction to GJK(slide 21), 21

Page 22: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Minkowski Difference

◮ So, A and B are intersecting iff MinkowskiDifference(A,B)contains the origin!

◮ The algorithm can stay the same, we just need to change thesupport point function to compute the Minkowski Difference

◮ MinkowskiDiffSupport(A,B,d) = A.Support(d) -B.Support(-d)

Mccutchan: Introduction to GJK(slide 22), 22

Page 23: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Support Point Functions – Polyhedra

Given: C – A convex hull of points

Support(d) = max(d · p : p ∈ C )

Mccutchan: Introduction to GJK(slide 23), 23

Page 24: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Support Point Functions – Sphere

Given: Sphere centered at c with radius r

Support(d) = c + rd

||d ||

Mccutchan: Introduction to GJK(slide 24), 24

Page 25: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Support Point Functions – Cylinder

Given: Cylinder centered at c and whose central axis is spanned bythe unit vector u. Let the radius of the cylinder be r and the halfheight be n. As well, Let w = d − (u · d)u be the component of dorthogonal to u.If w 6= 0:

Support(d) = c + sign(u · d)nu + rw

||w ||

else:Support(d) = c + sign(u · d)nu

Mccutchan: Introduction to GJK(slide 25), 25

Page 26: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Support Point Functions – Transformation

Given: T (x) = Bx + c Where B is the rotation matrix’s basis andc is the translation. SupportC is the support function of theuntransformed convex object.

Support(SupportC , d) = T (SupportC (BTd))

Mccutchan: Introduction to GJK(slide 26), 26

Page 27: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Computing P of minimum norm in CH(Q’) and reducing Qto Q’

◮ Overview of affine hulls and convex hulls

◮ Equivelance of affine and convex hulls

◮ Finding closest point on affine hull to origin

◮ Finding smallest Q’ where P is in CH(Q’)

Mccutchan: Introduction to GJK(slide 27), 27

Page 28: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Affine and Convex Hulls

◮ Affine Hull: AH(S) = λ1x1 + λ2x2 + ... + λkxk |xi ∈ S , λi ∈ R

◮ i = 1, ..., k, λ1 + λ2 + ...λk = 1, k = 1, 2, ...

◮ Convex Hull: CH(S) = λ1x1 +λ2x2 + ...+λkxk |xi ∈ S , λi ∈ R

◮ i = 1, ..., k, λ1 + λ2 + ...λk = 1, k = 1, 2, ..., λi >= 0

The point P closest to the origin is defined as a convexcombination of the points in Q. P =

∑ni=1 λixi where

∑ni=1 λi = 1.0 and λi ≥ 0 Since we are looking for the smallest Q’

that contains P we can add another restriction: λ > 0 Now we arelooking for Q ′ = xi : λi > 0

Mccutchan: Introduction to GJK(slide 28), 28

Page 29: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Equivelance of affine and convex hulls

If we can find a set Q ′ = xi : i ∈ Y for which i ∈ Y , λi > 0.0 in

AH(Q ′) =∑

i∈Y

λixi ,∑

i∈Y

λi = 1.0

and for all j /∈ Y , λj <= 0.0 in

AH(Q ′ ∪ Xj) =∑

i∈Y∪j

λixi ,∑

i∈Y∪j

λi = 1.0

For such a set Q ′ we have P(AH(Q ′)) = P(CH(Q ′))

Mccutchan: Introduction to GJK(slide 29), 29

Page 30: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Finding Q’

◮ You find Q’ by iterating over all subsets of Q and checking ifthey fit the two previous conditions.

◮ Need to compute all of the λi terms for all subsets

Mccutchan: Introduction to GJK(slide 30), 30

Page 31: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Closest point to origin on affine hull of triangle (2-simplex)

◮ Affine hull of a triangle is plane containing the triangle vertices

◮ We need to find a point P = λ1x1 + λ2x2 + λ3x3

◮ P will be closest to the origin if the vector from the origin toP is perpendicular to the plane

◮ In other words when P is perpendicular to the triangles edges

◮ Two arbitrary edges are x1x2 and x1x3 we want x1x2 · P = 0and x1x3 · P = 0

◮ If we substitute λ1x1 + λ2x2 + λ3x3 for P with both edges weget:

Mccutchan: Introduction to GJK(slide 31), 31

Page 32: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Closest point to origin on affine hull of triangle (2-simplex)

A =

1 1 1(x2 − x1) · x1 + (x2 − x1) · x2 + (x2 − x1) · x3

(x3 − x1) · x1 + (x3 − x1) · x2 + (x3 − x1) · x3

b = [1, 0, 0]

x = [λ1, λ2, λ3]

Mccutchan: Introduction to GJK(slide 32), 32

Page 33: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Johnson’s Distance sub algorithm

In general:

A =

1 ... 1(x2 − x1) · x1 ... (x2 − x1) · xm

... ...(xm − x1) · x1 ... (xm − x1) · xm

b = [1, 0, ..., 0]

x = [λ1, ..., λm]

Mccutchan: Introduction to GJK(slide 33), 33

Page 34: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Johnson’s Distance sub algorithm

◮ 1. Need to solve Ax = b for every subset of Q

◮ 2. Search for smallest Q ′ which satisfies above two conditions

◮ 3. Q = Q ′ and P =∑

i∈Q′ λixi

Mccutchan: Introduction to GJK(slide 34), 34

Page 35: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Johnson’s Distance sub algorithm

◮ How can all of the Ax = b systems be solved efficiently?

◮ Gino: Cramers Rule

◮ McCutchan: Use Maple/Matlab to precompute genericλ = A−1b for simplex size of 2,3,4

◮ Gino’s is faster but McCutchan’s is simple and obvious.

◮ GJK is already so fast and O(1) that speed difference notnoticeable on modern machines

Mccutchan: Introduction to GJK(slide 35), 35

Page 36: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

Alternative way to find Q’

◮ Look at the problem geometrically

◮ Use voronoi region checks to find which part of simplex theorigin is in.

◮ Solve single set of equations once proper sub simplex has beenfound.

◮ Pros: Most efficient and Intuitive way of working with GJK.

◮ Cons: May be floating point issues in using two differentmathematical formulations. One for determining the subsimplex and the other for solving for the lambda values.

Mccutchan: Introduction to GJK(slide 36), 36

Page 37: Introduction to GJK - Kent State Universityruttan/GameEngines/lectures/gjk1.pdf · 2016. 2. 22. · Introduction Introduction to GJK Terminology Algorithm in detail Example Minkowski

References

◮ Christer Ericson’s Real-time Collision Detection

◮ Christer Ericson’s Sigraph slides on GJK

◮ Gino Van Den Bergen’s Collision Detection in interactive 3Denvironments

Mccutchan: Introduction to GJK(slide 37), 37