I'm trying to perform continuous collision detection between a particle (with linear and angular displacement) and a convex hull.
I've read Real-Time Collision Detection by Christer Ericson and in chapter 5 section 3.8 he describes how to determine the time of impact between a line segment and a convex hull (which is represented by the intersection of a set of planes).
The idea is to clip the line segment by each plane and if a segment with a non-zero length remains, then pick the smallest time 't' and that's your time of impact. I've drawn an illustration:
![](https://uploads.gamedev.net/forums/monthly_2020_03/175c48b491ec40f6acee9627c5992804.linear_displacement.png)
My problem is this works for linear displacement, but the book does not discuss how to account for angular displacement.
Setting aside the convex hull for a moment I think my problem can be simplified as having to find the time of impact between a point (with linear and angular displacement) and a plane. If I can compute this, then to make it work for a convex hull, I believe I can clip its path and pick the smallest 't' as Ericson described for linear displacement.
I think angular displacement by itself (without linear displacement) can be computed by finding the angle between the particles position vector and a vector perpendicular to the plane. I've illustrated this idea below in 2D:
![](https://uploads.gamedev.net/forums/monthly_2020_03/f956a25499c44596994fdfa9c0092e60.angular_displacement.png)
The blue particle starts at t0 = 90° and ends at t1 = -90° (that's an angular displacement θ = -180°). My "plane" is represented by an orange dashed line. If we find the angle Φ between the plane's perpendicular vector and the original start position, we get Φ = 90°. So the time of impact is Φ/θ or 90°/180° = 0.5.
I'm not sure if my solution is entirely correct and even if this does work, how do I account for both linear and angular displacement together?
The following illustration shows a particle with a linear Y displacement of ~1.9 unites and an angular displacement θ = -180°.
![](https://uploads.gamedev.net/forums/monthly_2020_03/c77a36f4de3641b5b70653ec75562718.linear_and_angular_displacement.png)
I can't use the method described above because the time of impact extends beyond the angle Φ. This is because the particle is rising and rotating simultaneously making the angle at the time of impact closer to 120°.
Does anyone have any ideas on this?