290 likes | 454 Views
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.
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 ?