290 likes | 308 Views
Explore a framework for maintaining continuous visibility polygons with kinetic data structures, detecting crossing events, and updating the visibility polygon dynamically. Find the proof of correctness for static cases and animate it as items move. Discover the attributes on items and the idea of updating the visibility polygon. Discuss the pros and cons of this method and potential future work.
E N D
A simple kinetic visibility polygon EWCG’02 Samuel Hornus, Claude Puech
Hypothesis : • simply-polygonal obstacles • known algebraic motion (everything can move) • Goals : • maintaining the visibility polygon continuously • Solution : • Kinetic Data Structure framework
Overview • Kinetic Data Structures (KDS) • Visibility polygon • Detecting crossing events • Updating the visibility polygon • Conclusion contributions
Overview • Kinetic Data Structures (KDS) • Visibility polygon • Detecting crossing events • Updating the visibility polygon • Conclusion
certificate failure Kinetic Data Structures • Moving Items (points, segments, …) • Attributes on the items (convex hull, voronoï diagram) • given with a proof of correctness for the static case • Idea : animating the proof through time when items are moving [Bash and Guibas 95]
Proof of correctness Certificate failure Proof update Attribute update Kinetic Data Structures [Bash and Guibas 95]
Overview • Kinetic Data Structures (KDS) • Visibility polygon • Detecting crossing events • Updating the visibility polygon • Conclusion
Visibility polygon • n vertices / edges • Cyclically ordered set of the n tangent rays • The visible edge is stored between each pair of tangent rays
Overview • Kinetic Data Structures (KDS) • Visibility polygon • Detecting crossing events • Updating the visibility polygon • Conclusion
Detecting Events consecutive rays in the ordered set
crossing event ! Detecting Events
Detecting Events next crossing event
Overview • Kinetic Data Structures (KDS) • Visibility polygon • Detecting crossing events • Updating the visibility polygon • Conclusion
Updating the Visibility Polygon Knowing only the visibility polygon is not enough to maintain it, we need more data… We will use a weak radial decomposition of the scene.
Updating the Visibility Polygon • Each tangent ray consists of • the vertex of « tangency »
8 8 8 8 8 8 8 Updating the Visibility Polygon • Each tangent ray consists of • the vertex of « tangency » • - the hit edge along the ray, beyond the vertex of tangency 8
8 8 8 8 8 8 8 8 8 Updating the Visibility Polygon • Each tangent ray consists of • the vertex of « tangency » • - the hit edge along the ray • the visible edge at its left
8 8 8 8 8 8 8 8 8 Updating the Visibility Polygon • Each tangent ray consists of • the vertex of « tangency » • - the hit edge along the ray • the visible edge at its left • the type of the tangency vertex • see next slide…
Updating the Visibility Polygon Tangent ray type
Updating the Visibility Polygon Before the crossing hit2 hit1 R L
Updating the Visibility Polygon Before the crossing hit2 hit1 R L • There is no other tangent ray between these ones
Updating the Visibility Polygon Before the crossing hit2 hit1 R C L • There is no other tangent ray between these ones • C exists if and only if • hit1 is different from hit2
Updating the Visibility Polygon Before the crossing, when C does not exist hit2 hit1 R L visible = hit2 = hit1
Updating the Visibility Polygon Before the crossing, when C does not exist After the crossing, hit2 R hit2 hit1 hit1 := R R L L visible = hit2 = hit1 visible := L
Updating the Visibility Polygon Before the crossing, when C does not exist hit2 R C L hit1 = C visible = C
Updating the Visibility Polygon hit2 After the crossing, Before the crossing, when C exists R hit2 C R hit1 L C L hit1 = C visible = C visible := L
Conclusion • Pros • Concave (simple) polygons • Constant time processing of an event • Cons • High quantity of crossing events • Future Work • What about 3d ?
A simple kinetic visibility polygon Thank you for your attention Any questions ?