Implementing Geometric Algorithms for Real-World Applications With - - PowerPoint PPT Presentation

implementing geometric algorithms for real world
SMART_READER_LITE
LIVE PREVIEW

Implementing Geometric Algorithms for Real-World Applications With - - PowerPoint PPT Presentation

Implementing Geometric Algorithms for Real-World Applications With and Without EGC-Support Stefan Huber 1 Martin Held 2 1 Institute of Science and Technology Austria 2 FB Computerwissenschaften Universit at Salzburg, Austria GCC 2013, Rio de


slide-1
SLIDE 1

Implementing Geometric Algorithms for Real-World Applications With and Without EGC-Support

Stefan Huber1 Martin Held2

1Institute of Science and Technology Austria 2FB Computerwissenschaften

Universit¨ at Salzburg, Austria

GCC 2013, Rio de Janeiro, Brazil June 17–20

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications 1 of 29

slide-2
SLIDE 2

Outline

  • 1. Three industrial codes and their design principles:

FIST VRONI STALGO

  • 2. Adding CORE and MPFR backend.
  • 3. Open problems and future directions.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications 2 of 29

slide-3
SLIDE 3

FIST

◮ Triangulates polygons with holes in 2D and 3D,

◮ based on ear-clipping and ◮ multi-level geometric hashing to speed up computation [Held, 2001a].

◮ Handles

◮ degenerate input, Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 3 of 29

slide-4
SLIDE 4

FIST

◮ Triangulates polygons with holes in 2D and 3D,

◮ based on ear-clipping and ◮ multi-level geometric hashing to speed up computation [Held, 2001a].

◮ Handles

◮ degenerate input, ◮ self-overlapping input, Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 3 of 29

slide-5
SLIDE 5

FIST

◮ Triangulates polygons with holes in 2D and 3D,

◮ based on ear-clipping and ◮ multi-level geometric hashing to speed up computation [Held, 2001a].

◮ Handles

◮ degenerate input, ◮ self-overlapping input, ◮ self-intersecting input. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 3 of 29

slide-6
SLIDE 6

FIST

◮ Triangulates polygons with holes in 2D and 3D,

◮ based on ear-clipping and ◮ multi-level geometric hashing to speed up computation [Held, 2001a].

◮ Handles

◮ degenerate input, ◮ self-overlapping input, ◮ self-intersecting input.

◮ No Delaunay triangulation, but heuristics to generate “decent” triangles. ◮ Typical applications in industry: triangulation of (very) large GIS datasets,

triangulation of “planar” faces of 3D models.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 3 of 29

slide-7
SLIDE 7

Vroni/ArcVroni

◮ Computes Voronoi diagrams of

◮ points, straight-line segments and circular arcs, ◮ based on randomized incremental insertion and a topology-oriented approach

[Held and Huber, 2009, Held, 2001b].

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 4 of 29

slide-8
SLIDE 8

Vroni/ArcVroni

◮ Computes Voronoi diagrams of

◮ points, straight-line segments and circular arcs, ◮ based on randomized incremental insertion and a topology-oriented approach

[Held and Huber, 2009, Held, 2001b].

◮ Also computes

◮ (weighted) medial axis, Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 4 of 29

slide-9
SLIDE 9

Vroni/ArcVroni

◮ Computes Voronoi diagrams of

◮ points, straight-line segments and circular arcs, ◮ based on randomized incremental insertion and a topology-oriented approach

[Held and Huber, 2009, Held, 2001b].

◮ Also computes

◮ (weighted) medial axis, ◮ offset curves, and ◮ maximum-inscribed

circle.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 4 of 29

slide-10
SLIDE 10

Vroni/ArcVroni

◮ Computes Voronoi diagrams of

◮ points, straight-line segments and circular arcs, ◮ based on randomized incremental insertion and a topology-oriented approach

[Held and Huber, 2009, Held, 2001b].

◮ Also computes

◮ (weighted) medial axis, ◮ offset curves, and ◮ maximum-inscribed

circle.

◮ Typical applications in industry: generation of tool paths (e.g., for machining

  • r sintering), generation of buffers in GIS applications.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 4 of 29

slide-11
SLIDE 11

Stalgo

◮ Computing straight skeletons of

◮ planar straight-line graphs, ◮ based on a refined wavefront propagation using the motorcycle graph

[Huber and Held, 2012, Huber, 2012].

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 5 of 29

slide-12
SLIDE 12

Stalgo

◮ Computing straight skeletons of

◮ planar straight-line graphs, ◮ based on a refined wavefront propagation using the motorcycle graph

[Huber and Held, 2012, Huber, 2012].

Also computes

◮ Mitered offset curves, and

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 5 of 29

slide-13
SLIDE 13

Stalgo

◮ Computing straight skeletons of

◮ planar straight-line graphs, ◮ based on a refined wavefront propagation using the motorcycle graph

[Huber and Held, 2012, Huber, 2012].

Also computes

◮ Mitered offset curves, and ◮ roof models resp. terrains.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 5 of 29

slide-14
SLIDE 14

Success stories

◮ More than 100 commercial licenses world-wide for FIST, Vroni/ArcVroni and

STALGO.

◮ A few hundred Euros (for ArcVroni) up to a few thousand Euros/Dollars

(FIST, VRONI, STALGO).

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 6 of 29

slide-15
SLIDE 15

Success stories

◮ More than 100 commercial licenses world-wide for FIST, Vroni/ArcVroni and

STALGO.

◮ A few hundred Euros (for ArcVroni) up to a few thousand Euros/Dollars

(FIST, VRONI, STALGO).

◮ “Industrial-strength” implementations achieved:

◮ Only a handful of bug reports in more than ten years ◮ of heavy commercial and academic use, and lots of satisfied customers. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 6 of 29

slide-16
SLIDE 16

Datasets from industry

◮ Real-world data often means no quality at all:

◮ brute-force simplifications / approximations of data, ◮ data cleaned up manually and “visually”, ◮ etc.

◮ As a consequence:

◮ All sorts of degeneracies, self-intersections, tiny gaps, etc.

General position must not be assumed. Data sizes:

◮ From a few thousand segments/arcs in a machining application ◮ to a few million segments in a GIS application.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 7 of 29

slide-17
SLIDE 17

Efficiency requirements

◮ From real-time map generation on a smart phone ◮ to minutes of CPU time allowed on some high-end machine. ◮ In general, linear space complexity and a close-to-linear time complexity is

expected.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 8 of 29

slide-18
SLIDE 18

Engineering principles: Use alternative computations

◮ Algebraically equivalent terms need not be equally reliable on fp arithmetic.

◮ Check whether a computation becomes instable, and use an alternative

approach.

◮ Sample application: Compute the bisector b between f and g.

g f b p u v

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 9 of 29

slide-19
SLIDE 19

Engineering principles: Use alternative computations

◮ Algebraically equivalent terms need not be equally reliable on fp arithmetic.

◮ Check whether a computation becomes instable, and use an alternative

approach.

◮ Sample application: Compute the bisector b between f and g.

g f b p u v g f b p u v

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 9 of 29

slide-20
SLIDE 20

Engineering principles: Topology-oriented approach

◮ First used by Sugihara et alii [1992, 2000]. ◮ Define topological criteria that the output has to meet.

◮ Use fp-computations to choose among different topological set-ups if two or

more set-ups fulfill all criteria.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 10 of 29

slide-21
SLIDE 21

Engineering principles: Topology-oriented approach

◮ First used by Sugihara et alii [1992, 2000]. ◮ Define topological criteria that the output has to meet.

◮ Use fp-computations to choose among different topological set-ups if two or

more set-ups fulfill all criteria.

◮ Sample application:

◮ Incremental insertion of

a point into a Voronoi diagram.

◮ The portion of the

Voronoi diagram to be deleted forms a tree.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 10 of 29

slide-22
SLIDE 22

Engineering principles: Topology-oriented approach

◮ First used by Sugihara et alii [1992, 2000]. ◮ Define topological criteria that the output has to meet.

◮ Use fp-computations to choose among different topological set-ups if two or

more set-ups fulfill all criteria.

◮ Sample application:

◮ Incremental insertion of

a point into a Voronoi diagram.

◮ The portion of the

Voronoi diagram to be deleted forms a tree.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 10 of 29

slide-23
SLIDE 23

Engineering principles: Topology-oriented approach

◮ First used by Sugihara et alii [1992, 2000]. ◮ Define topological criteria that the output has to meet.

◮ Use fp-computations to choose among different topological set-ups if two or

more set-ups fulfill all criteria.

◮ Sample application:

◮ Incremental insertion of

a point into a Voronoi diagram.

◮ The portion of the

Voronoi diagram to be deleted forms a tree.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 10 of 29

slide-24
SLIDE 24

Engineering principles: Topology-oriented approach

◮ First used by Sugihara et alii [1992, 2000]. ◮ Define topological criteria that the output has to meet.

◮ Use fp-computations to choose among different topological set-ups if two or

more set-ups fulfill all criteria.

◮ Sample application:

◮ Incremental insertion of

a point into a Voronoi diagram.

◮ The portion of the

Voronoi diagram to be deleted forms a tree.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 10 of 29

slide-25
SLIDE 25

Engineering principles: Epsilon relaxation

1 TypicalComputationalUnit() 2 begin 3

ǫ ← ǫmin // Set ǫ to maximum precision

4

while ǫ ≤ ǫmax do

5

result ← ComputeUnit(ǫ) // Compute some data

6

if CheckResult(result, ǫ) then // Topological/numerical checks

7

return result

8

else

9

ComputeUnitReset()

10

ǫ ← 10 · ǫ // Relaxation of epsilon

11

end

12

end

13

if not CheckInputLocally() then // Is input sound?

14

CleanInputLocally() // Fix problems in the input

15

RestartComputationGlobally() // Restart from scratch

16

else

17

return ComputeUnitDesperateMode() // Time to hope for the best

18

end

19 end

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 11 of 29

slide-26
SLIDE 26

Engineering principles: Avoiding geometric decisions

extended wavefront

◮ Simulation of wavefront propagation, DCEL

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 12 of 29

slide-27
SLIDE 27

Engineering principles: Avoiding geometric decisions

◮ Simulation of wavefront propagation, DCEL

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 12 of 29

slide-28
SLIDE 28

Engineering principles: Avoiding geometric decisions

v1 v2 v ′

1

v ′

2

e1 e2

◮ Simulation of wavefront propagation, DCEL ◮ Straight-forward: remove e1, e2, v1, v2

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 12 of 29

slide-29
SLIDE 29

Engineering principles: Avoiding geometric decisions

v1 v2 v v ′

1

v ′

2

e1 e2

◮ Simulation of wavefront propagation, DCEL ◮ Straight-forward: remove e1, e2, v1, v2

◮ Add v and relink it with v ′

1, v ′ 2.

◮ Involves geometric decisions! And multiple events can occur simultaneously. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 12 of 29

slide-30
SLIDE 30

Engineering principles: Avoiding geometric decisions

v1 v2 v v ′

1

v ′

2

e1 e2

◮ Simulation of wavefront propagation, DCEL ◮ Straight-forward: remove e1, e2, v1, v2

◮ Add v and relink it with v ′

1, v ′ 2.

◮ Involves geometric decisions! And multiple events can occur simultaneously.

◮ Better: remove v1, v2 but repot e1, e2 to v.

◮ No geometric decisions involved. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Geometric codes in industry 12 of 29

slide-31
SLIDE 31

Adding CORE backend

Canonical adaptions:

◮ Set EPS to 0. ◮ Migrate fabs(expr) < EPS to fabs(expr) <= EPS.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 13 of 29

slide-32
SLIDE 32

Adding CORE backend

Canonical adaptions:

◮ Set EPS to 0. ◮ Migrate fabs(expr) < EPS to fabs(expr) <= EPS.

Migrating C to C++:

◮ printf("%f", val); scanf("%f", &val); ◮ malloc, free → new, delete

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 13 of 29

slide-33
SLIDE 33

Adding CORE backend

Canonical adaptions:

◮ Set EPS to 0. ◮ Migrate fabs(expr) < EPS to fabs(expr) <= EPS.

Migrating C to C++:

◮ printf("%f", val); scanf("%f", &val); ◮ malloc, free → new, delete

More subtle problems encountered:

◮ Expr::intValue() rounds “inexact”:

◮ Rounds up or down, depending on expression tree. ◮ Decision based on finitely many bits. ◮ Work-around: migrate intValue() to floor(). Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 13 of 29

slide-34
SLIDE 34

Adding CORE backend

Summary:

◮ FIST works with CORE. ◮ Vroni and Stalgo could not be executed.

◮ Willi Mann’s bug fixes and performance patches in CORE-2.1. ◮ Still, several CPU-minutes did not suffice to determine sign of a single

expression stemming from simple inputs.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 14 of 29

slide-35
SLIDE 35

Adding MPFR backend

Canonical adaptions:

◮ EPS needs to depend on precision.

◮ We used a heuristic formula:

EPS := ǫfp · 2−100·(√

prec/53−1),

where ǫfp is the former machine-precision EPS.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 15 of 29

slide-36
SLIDE 36

Adding MPFR backend

Canonical adaptions:

◮ EPS needs to depend on precision.

◮ We used a heuristic formula:

EPS := ǫfp · 2−100·(√

prec/53−1),

where ǫfp is the former machine-precision EPS.

Practical work required:

◮ MPFR is not shipped with a C++ wrapper.

◮ Code that generates wrapper classes with the required operators overloaded.

◮ Partial C to C++ migration, as for CORE.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 15 of 29

slide-37
SLIDE 37

Experimental results: FIST

◮ 21175 polygons (w/ and w/o holes). ◮ Six arithmetic configurations:

◮ fistFp, fistShew, fistCore, fistMp{53, 212, 1000} Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 16 of 29

slide-38
SLIDE 38

Experimental results: FIST

◮ 21175 polygons (w/ and w/o holes). ◮ Six arithmetic configurations:

◮ fistFp, fistShew, fistCore, fistMp{53, 212, 1000}

◮ Conclusion:

◮ Shewchuck’s predicates have negligible impact on speed. ◮ fistMP* about 24× slower than fistFp. ◮ fistCore about 60× slower than fistFp.

10−8 10−7 10−6 10−5 10−4 103 104 105 106

0.08 to 0.20 · n log n µs

103 104 105 106

1.5 to 8 · n log n µs

103 104 105 106

4 to 10 · n log n µs

Figure: Runtime per seconds divided by n log n. fistFp, fistMp212, fistCore.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 16 of 29

slide-39
SLIDE 39

Experimental results: FIST

Correctness of inexact configurations?

◮ Verification code:

◮ Bentley-Ottmann, implemented with exact mpq_t from GMP.

◮ Take 0.1 as closest fp-number using atof(). ◮ No errors found!

Conclusion: Non-exactness no practical issue in pure fp applications.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 17 of 29

slide-40
SLIDE 40

Experimental results: Voronoi diagrams

◮ Vroni versus CGAL. ◮ 18787 polygons (< 100000 vertices) ◮ Six configurations:

◮ vroniFp, vroniMp{53, 212, 1000}, cgvdFp ◮ cgvdEx: CORE-based predicate kernel Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 18 of 29

slide-41
SLIDE 41

Experimental results: Voronoi diagrams

◮ Conclusion:

◮ vroniMp* about 50–70× slower than vroniFp. ◮ cgvd* about 50–80× slower than vroniFp. ◮ cgvdFp only 1.5× faster than cgvdEx. ◮ Crashed on 937 datasets due to fp-exception. ◮ On average, cgvdEx slightly faster than vroniMp*. ◮ cgvdEx timings vary by a factor of 20. ◮ A few cgvdEx results were numerically clearly wrong.

10−7 10−6 10−5 10−4 10−3 10−2 102 103 104 105

0.5 to 1.6 · n log n µs

102 103 104 105

25 to 80 · n log n µs

102 103 104 105

9 to 170 · n log n µs

Figure: Runtime per seconds divided by n log n. vroniFp, vroniMp212, cgvdEx.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 19 of 29

slide-42
SLIDE 42

Experimental results: Voronoi diagrams

Numerical precision of Voronoi nodes:

◮ Deviation: difference in the distances of a node to its defining sites. ◮ Violation: another site is closer to a node than defining sites. 10−16 10−13 10−10 10−7 10−4 10−1 20000 40000 60000 80000 cgvdEx vroniFp vroniMp212 10−16 10−13 10−10 10−7 10−4 10−1 2000 4000 6000 8000 10000 cgvdEx vroniFp vroniMp212

Figure: Left: Deviation. Right: violation

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications MPFR- and CORE-support 20 of 29

slide-43
SLIDE 43

EGC: A simple case study

A function test(N):

◮ Generate a shuffled array A with elements ±k1, . . . , ±kN, with ki being

random integers.

◮ We build the sum S over A. ◮ How long does S == Expr(0) take?

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 21 of 29

slide-44
SLIDE 44

EGC: A simple case study

A function test(N):

◮ Generate a shuffled array A with elements ±k1, . . . , ±kN, with ki being

random integers.

◮ We build the sum S over A. ◮ How long does S == Expr(0) take?

Results depend on the set-up:

◮ Are filters working? ◮ How is the sum built?

◮ Naive for-loop, or ◮ in a balanced fashion.

The “default case”: with filters, naive for-loop.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 21 of 29

slide-45
SLIDE 45

◮ CORE, naive sum:

◮ O(n2) time ◮ w/ filter: O(n2) mem

◮ LEDA: virtually zero

runtime

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 22 of 29

slide-46
SLIDE 46

EGC: a simple case study

What if we put stress on the filters?

◮ Add to the array A five times sqrt(2) and -sqrt(2). ◮ How long will S == Expr(0) take now?

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 23 of 29

slide-47
SLIDE 47

◮ naive sum:

◮ O(n2) time ◮ O(n2) mem

◮ balanced sum:

◮ O(1) or O(n) time ◮ O(n) mem ◮ filters have more

impact Disclaimer: Of course, these expressions will unlikely occur in real-world software.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 24 of 29

slide-48
SLIDE 48

EGC/MPFR: Conclusion

◮ EGC software can be fast, see Shewchuck’s Triangle.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 25 of 29

slide-49
SLIDE 49

EGC/MPFR: Conclusion

◮ EGC software can be fast, see Shewchuck’s Triangle. ◮ Height-balancing expression trees might reduce the costs for time and space

significantly.

◮ We might observe different complexities in terms of big-Oh. ◮ On- and offline structural optimization strategies for expression trees are worth

to be investigated.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 25 of 29

slide-50
SLIDE 50

EGC/MPFR: Conclusion

◮ EGC software can be fast, see Shewchuck’s Triangle. ◮ Height-balancing expression trees might reduce the costs for time and space

significantly.

◮ We might observe different complexities in terms of big-Oh. ◮ On- and offline structural optimization strategies for expression trees are worth

to be investigated.

◮ Adding EGC support to non-trivial software a-posteriori can be extremely

challenging.

◮ Different programming styles due to focus on either numerical accuracy or

awareness of expression trees.

◮ EGC-aware programming right from the start is necessary. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 25 of 29

slide-51
SLIDE 51

EGC/MPFR: Conclusion

◮ EGC software can be fast, see Shewchuck’s Triangle. ◮ Height-balancing expression trees might reduce the costs for time and space

significantly.

◮ We might observe different complexities in terms of big-Oh. ◮ On- and offline structural optimization strategies for expression trees are worth

to be investigated.

◮ Adding EGC support to non-trivial software a-posteriori can be extremely

challenging.

◮ Different programming styles due to focus on either numerical accuracy or

awareness of expression trees.

◮ EGC-aware programming right from the start is necessary.

◮ Adding MPFR support is straight-forward

◮ MPFR boosts numerical accuracy. ◮ MPFR helps to distinguish numerical errors from logical bugs. ◮ Precision-elevation instead of epsilon-relaxation? Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications EGC: a simple case study 25 of 29

slide-52
SLIDE 52

Discontinuous problems and EGC

Straight skeletons can change discontinuously with the input:

v u

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Open problems 26 of 29

slide-53
SLIDE 53

Discontinuous problems and EGC

Straight skeletons can change discontinuously with the input:

v u

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Open problems 26 of 29

slide-54
SLIDE 54

Discontinuous problems and EGC

Straight skeletons can change discontinuously with the input:

v u

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Open problems 26 of 29

slide-55
SLIDE 55

Discontinuous problems and EGC

Straight skeletons can change discontinuously with the input:

v u

◮ The polygon is stored with finite precision to a file.

◮ fp-codes are likely to produce the left skeleton/roof, which is intended. ◮ EGC-codes produce the right skeleton/roof, which is undesired. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Open problems 26 of 29

slide-56
SLIDE 56

Discontinuous problems and EGC

Straight skeletons can change discontinuously with the input:

v u

◮ The polygon is stored with finite precision to a file.

◮ fp-codes are likely to produce the left skeleton/roof, which is intended. ◮ EGC-codes produce the right skeleton/roof, which is undesired.

What is the lesser evil?

◮ Either waive EGC, ◮ Or forsake the desired output of the algorithm.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Open problems 26 of 29

slide-57
SLIDE 57

Discontinuous problems and EGC

f p p′ p′′ S Input space Output space

◮ f is discontinuous on a sub-space S (red) of the input space.

◮ “Reversed simulation of simplicity”? Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Open problems 27 of 29

slide-58
SLIDE 58

A common yardstick

“Our algorithm runs in O(n log n) time in practice.” “Our implementation behaved reliable in our tests.”

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 28 of 29

slide-59
SLIDE 59

A common yardstick

“Our algorithm runs in O(n log n) time in practice.” “Our implementation behaved reliable in our tests.” However:

◮ Experiments often comprise only a few datasets. ◮ Datasets have no diversity. ◮ Different papers compare against different data, if at all.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 28 of 29

slide-60
SLIDE 60

A common yardstick

A standard computational geometry dataset library (SCGDL) would have many benefits:

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 29 of 29

slide-61
SLIDE 61

A common yardstick

A standard computational geometry dataset library (SCGDL) would have many benefits:

◮ Experiments become more meaningful and comparable:

◮ Precise timings and memory consumption. ◮ How often did an implementation crash? ◮ How many results were wrong? Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 29 of 29

slide-62
SLIDE 62

A common yardstick

A standard computational geometry dataset library (SCGDL) would have many benefits:

◮ Experiments become more meaningful and comparable:

◮ Precise timings and memory consumption. ◮ How often did an implementation crash? ◮ How many results were wrong?

◮ Enables a culture of extensive experimental evaluation.

◮ Brings CG and industry closer together. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 29 of 29

slide-63
SLIDE 63

A common yardstick

A standard computational geometry dataset library (SCGDL) would have many benefits:

◮ Experiments become more meaningful and comparable:

◮ Precise timings and memory consumption. ◮ How often did an implementation crash? ◮ How many results were wrong?

◮ Enables a culture of extensive experimental evaluation.

◮ Brings CG and industry closer together.

◮ Implementing reliable geometric codes requires testing.

◮ An incentive to provide “gapless” and practial descriptions of algorithms. Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 29 of 29

slide-64
SLIDE 64

Figure: Taken from http://joyreactor.com/post/818128

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 30 of 29

slide-65
SLIDE 65

Bibliography I

Held, M. (2001a). FIST: Fast Industrial-Strength Triangulation of Polygons. Algorithmica, 30(4):563–596. Held, M. (2001b). VRONI: An Engineering Approach to the Reliable and Efficient Computation of Voronoi Diagrams of Points and Line Segments.

  • Comput. Geom. Theory and Appl., 18(2):95–123.

Held, M. and Huber, S. (2009). Topology-Oriented Incremental Computation of Voronoi Diagrams of Circular Arcs and Straight-Line Segments.

  • Comput. Aided Design, 41(5):327–338.

Huber, S. (2012). Computing Straight Skeletons and Motorcycle Graphs: Theory and Practice. Shaker Verlag. ISBN 978-3-8440-0938-5. Huber, S. and Held, M. (2012). A Fast Straight-Skeleton Algorithm Based on Generalized Motorcycle Graphs.

  • Internat. J. Comput. Geom. Appl., 22(5):471–498.

Stefan Huber, Martin Held: Geometric Algorithms for Real-World Applications Conclusion 31 of 29