2D Arrangements in CGAL: Recent Developments - PowerPoint PPT Presentation

About This Presentation
Title:

2D Arrangements in CGAL: Recent Developments

Description:

'Bypasses are devices that allow some people to dash from point A to ... Circular arcs, Canonical Parabola, Bezier Curves. Insertions. Non intersecting insert ... – PowerPoint PPT presentation

Number of Views:60
Avg rating:3.0/5.0
Slides: 44
Provided by: sha113
Category:

less

Transcript and Presenter's Notes

Title: 2D Arrangements in CGAL: Recent Developments


1
2D Arrangements in CGALRecent Developments
  • CGAL Team
  • School of Computer Science
  • Tel Aviv University

Eti Ezra, Eyal Flato, Efi Fogel, Dan Halperin,
Shai Hirsch, Eran Leiserowitz, Eli Packer, Tali
Zvi, Ron Wein
2
Outline
  • Introduction
  • The Packages in Brief
  • Exploiting the Kernel
  • Categorizing the Traits
  • Benchmarking
  • More Work

3
Outline
  • Introduction
  • The Package in Brief
  • Exploiting the Kernel
  • Categorizing the Traits
  • Benchmarking
  • More Work

4
Introduction
  • Bypasses are devices that allow some people to
    dash from point A to point B very fast while
    other people dash from point B to point A very
    fast. People living at point C, being a point
    directly in between, are often given to wonder
    what's so great about point A that so many people
    from point B are so keen to get there and what's
    so great about point B that so many people from
    point A are so keen to get there. They often wish
    that people would just once and for all work out
    where the hell they wanted to be.
  • Douglas Adams

5
Definitions
  • Planar Maps
  • Planar graphs that are embedded
  • in the plane

6
Definitions (cont.)
  • Planar Arrangements
  • Given a collection G of planar curves,
  • the arrangement A(G) is the partition
  • of the plane to vertices, edges and
  • faces induced by the curves of G

7
Application GIS
Nguyen Dong Ha, et al.
8
Application Robot Motion Planning
Flato, Halperin
9
Outline
  • Introduction
  • The Package in Brief
  • Exploiting the Kernel
  • Categorizing the Traits
  • Benchmarking
  • More Work

10
The Package in Brief
  • A common mistake that people make when trying to
    design something completely foolproof is to
    underestimate the ingenuity of complete fools.
  • Douglas Adams

11
The Package in Brief
  • Goal Construct, maintain, modify, traverse,
    query and present subdivisions of the plane
  • Exact
  • Generic
  • Handles all degeneracies
  • Efficient

12
  • Topological_map
  • Maintains topological maps of finite edges
  • Planar_map_2
  • Maintains planar maps of interior-disjoint
    x-monotone curves
  • Planar_map_with_intersections_2
  • Maintains planar maps of general curves (may
    intersect, may be non-x-monotone)
  • Arrangement_2
  • Maintains planar maps of intersecting curves
    along with curve history

13
The Package in Brief
14
Functionality
  • Creation Destruction
  • I/O
  • Save, Load, Print (ASCII streams)
  • Draw (graphic streams)
  • Flexibility (Adaptable and Extensible, Verbose
    mode, I/O of specific elements)
  • Modification
  • Insertion, Removal, Split, Merge
  • Traversal
  • Queries
  • Number of Vertices, Halfedges, Faces
  • Is Point in Face
  • Point Location, Vertical ray shoot

15
Traversal
  • Element Traversal
  • Vertex Iterator
  • Face Iterator
  • Edge Iterator
  • Halfedge Iterator
  • Map Traversal
  • Connected Component of the Boundary (CCB)
    Halfedge Circulator
  • Around Vertex Halfedge Circulator
  • Hole Iterator

16
Point Location Strategies
  • Naive
  • No preprocessing, no internal data
  • Linear query time
  • Walk along a line
  • No preprocessing, no internal data
  • Linear query time with heuristics
  • Trapezoidal decomposition based
  • Preprocessing, internal data
  • Expected logarithmic query time

17
Traits Classes
  • Geometric Interface
  • Parameter of package
  • Defines the family of curves in interest
  • Package can be used with any family of curves for
    which a traits class is supplied
  • Aggregate
  • geometric types (points, curves)
  • Operations over types (accessors, predicates,
    constructors)

18
Traits Classes
  • Supplied Traits Classes
  • Segments, Polylines, Circular arcs and Line
    segments, Conics (and line segments).
  • Other Known Traits Classes
  • Circular arcs, Canonical Parabola, Bezier Curves

19
Insertions
  • Non intersecting insert

Halfedge_handle non_intersecting_insert(const
X_curve_2 cv,
Change_notification
en NULL)
  • Intersecting insert

Halfedge_handle insert(const X_curve_2 cv,
Change_notification en NULL)
20
Insertions
  • Incremental Insert
  • Aggregate Insert
  • Often information is known in advance
  • Containing face
  • Insert in face interior
  • Incident vertices
  • Insert from vertex, between vertices
  • Order around vertex
  • Insert from halfedge target, between halfedge
    targets

21
Aggregate Insert
  • Inserts a container into the map

template ltclass curve_iteratorgt Halfedge_iterator
insert(const curve_iterator begin,
const curve_iterator end,
Change_notification en NULL)
  • Two versions
  • Simplified - planar map no intersections
  • General - planar map with intersections
  • Sweep based
  • If planar map is not empty, use overlay

22
Outline
  • Introduction
  • The Package in Brief
  • Exploiting the Kernel
  • Categorizing the Traits
  • Benchmarking
  • More Work

23
Exploiting the Kernel
  • Human beings, who are almost unique in having
    the ability to learn from the experience of
    others, are also remarkable for their apparent
    disinclination to do so.
  • Douglas Adams

24
CGAL Kernel Context
  • CGAL consists of three major parts
  • Kernel
  • Basic geometric data structures and algorithms
  • Convex Hull, Planar_map, Arrangement, etc.
  • Non-geometric support facilities

25
CGAL Kernel
  • Encapsulates
  • Constant-size non-modifiable geometric primitive
    object representations
  • Point, Segments, hopefully Conics, etc
  • operations (and predicates) on these objects
  • Adaptable and Extensible
  • Efficient
  • Used as a traits class for algorithms

26
Adapting the kernel
  • Exchange of representation classes
  • Representation classes are parameterized by a
    number type
  • Geometric objects are extracted from a
    representation class

template ltclass Kernelgt class Pm_segment_traits_2
public Kernel public typedef typename
KernelPoint_2 Point_2 typedef typename
KernelSegment_2 X_curve_2
27
Adapting the kernel
  • Functors provide the functionality
  • Functor a class that define an appropriate
    operator()
  • Object for functors are obtained through access
    member functions

template ltclass Kernelgt class Pm_segment_traits_2
public Kernel Comparison_result
compare_x(const Point_2 p1, const
Point_2 p2) const return compare_x_2_object(
)(p1, p2)
28
Adapting the kernel
  • Code reduction
  • Implementation is simple and concise
  • Traits reduction
  • Matthias Baesken LEDA Kernel makes the dedicated
    LEDA Traits obsolete

if defined(USE_LEDA_KERNEL) typedef
CGALleda_rat_kernel_traits
Kernel else typedef leda_rational
NT typedef CGALCartesianltNTgt
Kernel endif typedef CGALPm_segment_traits_2
ltKernelgt Traits
29
Outline
  • Introduction
  • The Package in Brief
  • Exploiting the Kernel
  • Categorizing the Traits
  • Benchmarking
  • More Work

30
Categorizing the Traits
  • It is a mistake to think you can solve any major
    problems just with potatoes.
  • Douglas Adams

31
Categorizing the Traits
  • In the past 2 levels of refinements
  • Planar map Traits
  • Planar map of intersecting curves Traits
  • In the future multiple categories
  • Each category identifies a behavior
  • Multiple Tags
  • All categories identify the Traits

32
Dispatching Algorithms
  • Tailored Algorithms
  • Curve category
  • Segments, Circular Arcs, Conics

template ltclass Kernelgt class Arr_segment_traits_2
typedef Segment_tag Curve_category templ
ate ltclass Kernelgt class Arr_conic_traits_2
typedef Conic_tag Curve_category
33
Dispatching Algorithms
  • Trading between efficiency and complexity
  • Intersection Category
  • Lazy, Efficient

typedef Lazy_intersection_tag Intersection_categor
y Point_2 reflect_point(const Point_2 pt)
const X_curve_2 reflect_curve(const X_curve_2
cv) const Bool nearest_intersection_to_right()
const
typedef Efficient_intersection_tag
Intersection_category Bool nearest_intersection_t
o_right() const Bool nearest_intersection_to_lef
t() const
34
Tightening the Traits
  • Different operations may have
  • Different requirements
  • Different preconditions
  • Minimal set of requirements
  • Sweep has less requirement

bool do_intersect_to_left(c1, c2, pt) bool
do_intersect_to_right(c1, c2, pt) bool
nearest_intersection_to_left(c1, c2, pt, ) bool
nearest_intersection_to_right(c1, c2, pt,
) result curve_compare_at_x_left(cv1, cv2,
pt) result curve_compare_at_x_right(cv1, cv2, pt)
35
Specialization
  • Caching
  • Avoid computations (intersection points)
  • Avoid construction (extreme end-points)
  • Code Reuse
  • Caching of intersection points is currently
    implemented as part of the conic traits
  • Requires redefinition of some classes (e.g.,
    halfedge)
  • Work in progress

36
Outline
  • Introduction
  • The Package in Brief
  • Exploiting the Kernel
  • Categorizing the Traits
  • Benchmarking
  • More Work

37
Insert Multiplications
Non intersecting vs. intersecting 2
Incremental vs. aggregate 2
Point location strategies 3
CGAL cartesian parameterized with LEDA rational number type vs. Matthias LEDA Kernel 2
Segments, Conics 2
Traits categories 2
Total 96
38
Benchmarks
39
Benchmarks
40
Outline
  • Introduction
  • The Package in Brief
  • Exploiting the Kernel
  • Categorizing the Traits
  • Benchmarking
  • More Work

41
More Work
  • Capital letters were always the best way of
    dealing with things you didn't have a good answer
    to.
  • Douglas Adams

42
More Work
  • Consolidate Pm and Pmwx into a unified class
    Planar_map_2
  • Introduce more Specialization categories and
    options
  • Introduce more Point Location Strategies
  • Introduce Traits classes for complex curves
  • Move up to higher dimensions

43
End
Write a Comment
User Comments (0)
About PowerShow.com