Kinetic Sweep & Prune
Posted: Tue May 09, 2006 11:36 am
Im having some problems to understand how kinetic sweep and prune works. After reading http://graphics.idav.ucdavis.edu/~dcomi ... phys05.pdf and http://www.dtecta.com/papers/gdc2006_va ... cs_Tut.pps i still don't understand the general idea of the algorithm.
This is what i think i do understand: each axis (x,y,z) contains a list of endpoints and a priority que. Each frame and for each axis i go thrue the endpointlist and for each adjicent endpoint pair i compute a posible swap by predicting new positions for those endpoints and compute time of the swap. Each of those swaps i place in a priority que where the smallest time of the swap is treated as a priority.
But what does this priority que represent and how should i process the swaped pair?
How do i work together with the other two axises when it comes to check if the intervals are overlaping in all axises like in original axis sweep?
The endpoint lists still need to be sorted, but when i move endpoints and resort the endpointlist im back at the original sweep and prune so what is the point on looking at relative movement of the endpoints?
In Don's paper he talks about to not update the endpoints as long as you can compute the position based on a position(time) function, but how would you manage to do that in a physical simulation where you have to integrate new positions because you can't construct a function that describes the movement of objects in the system (or can you?). I prefer to implement the kinetic sweep based on Gino's idea so i guess i don't have to concider that problem yet.
Its hard to even make a prototype of the algorithm without even understanding the basic idea and especialy what makes the kinetic aproach faster then the original axis sweep.
If someone understand those papers better than me or even implemented those techniques it would be very nice if you could provide a better explanation.
This is what i think i do understand: each axis (x,y,z) contains a list of endpoints and a priority que. Each frame and for each axis i go thrue the endpointlist and for each adjicent endpoint pair i compute a posible swap by predicting new positions for those endpoints and compute time of the swap. Each of those swaps i place in a priority que where the smallest time of the swap is treated as a priority.
But what does this priority que represent and how should i process the swaped pair?
How do i work together with the other two axises when it comes to check if the intervals are overlaping in all axises like in original axis sweep?
The endpoint lists still need to be sorted, but when i move endpoints and resort the endpointlist im back at the original sweep and prune so what is the point on looking at relative movement of the endpoints?
In Don's paper he talks about to not update the endpoints as long as you can compute the position based on a position(time) function, but how would you manage to do that in a physical simulation where you have to integrate new positions because you can't construct a function that describes the movement of objects in the system (or can you?). I prefer to implement the kinetic sweep based on Gino's idea so i guess i don't have to concider that problem yet.
Its hard to even make a prototype of the algorithm without even understanding the basic idea and especialy what makes the kinetic aproach faster then the original axis sweep.
If someone understand those papers better than me or even implemented those techniques it would be very nice if you could provide a better explanation.