forked from aewallin/openvoronoi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
73 lines (64 loc) · 3.9 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Core algorithm
- add suport for arcs
- better logging (logging levels, where we log, etc)
- better error handling (exceptions?)
- refactor (?) to reduce voronoidiagram.cpp (almost 2000 lines)
- Edge-parametrizations are now stored twice, for Edge e and for g[e].twin.
We could save memory by only storing them once.
- Edge and Vertex types are now "C-style" polymorphic. Could this be
improved with inheritance-based polymorphism. This may be problematic
if BGL wants Edge/Vertex properties to be default-constructible and assignable etc.
- separate VoronoiDiagramChecker code into topology tests and geometry tests.
- write a "Reducer" class for investigating problematic cases. When we find a
case which makes the code crash, the Reducer takes the (potentially large)
test case and removes sites one-by-one until we have a minimal test-case
that still causes failure. This would greatly help pinpoint problems in Solvers.
- A segfault will result if the user tries to insert a line-segment that intersects with an already inserted
line-segment. Try to fail more graciously, or warn the user. Probably same issue with identical point-sites.
Solvers
- geometric-filtering. try solver<double>, evaulate quality of solution,
if it's good take it, if it's bad, call solver<qd_real> (which is a lot slower!)
LLLSolver
- alternative geometry for parallel line-segment case. See Patel's thesis, page 32.
new SEPSolver
- when we have a line-segment site and its endpoint
Offset
- figure out how to nest offset-loops to generate a machining-graph
-- the FaceOffset (in offset2.hpp) class is an attempt in this direction
An offset-loop consists of a sequence of offsets coming from a face.
If we store the sequence of faces it may be possible to nest offset-loops based on this.
OR it may be necessary to compute and store the VD vertices that a loop encloses, and nest loops based on this.
Another approach to nesting is a point-in-polygon test - but this test is based on geometry, the above approach would
be based on topology, and thus be more robust.
- linking of offset loops for an offsetting-toolpath
- provide an alternative zigzag-pocketing toolpath (see optimization papers by Held/Arkin)
- Look at HSM-literature and try to implement one or many HSM-strategies.
See Held's slides www.cosy.sbg.ac.at/~held/teaching/seminar/seminar_2010-11/hsm.pdf
Medial-Axis
- is the current medial-axis-walk a sound machining strategy? can it be improved.
- fix medial-axis-walk case where we don't find a start-edge if the medial axis is e.g. O-shaped
- optimize the order of toolpath so that "pen_up, rapid_traverse, pen_down" jumps are minimized
Input/Output
- Write a class that makes it simpler to insert a polygon (with islands), and/or many polygons
- SVG, DXF output for vd and offsets
- SVG, DXF input
Tests
- Write more tests! ( also in c++? )
- Test for memory-leaks with valgrind
- Code-coverage for tests
- Benchmark against libarea/kbool and libarea/Clipper (are there other FOSS offsetting codes?)
- Compare against other VD codes (CGAL, boost-sweepline, others?)
- Write software that generates test-cases (ttt is a good example)
-- notes on random polygons:
-- http://www.geometrylab.de/applet-29-en
-- http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Generator_ref/Function_random_polygon_2.html
-- http://www.cs.uiuc.edu/~jeffe/open/randompoly.html
Documentation
- improve doxygen documentation (can we put Asymptote/SVG drawings in the doxygen-generated html?)
- set up github homepage with gallery of output, doxygen documentation, download counters, etc.
Packaging/Building etc
- the libboost-python dependency now has to be specified with many alternative version numbers. why?
- have separate targets for pure c++ library and python module.
- build(and install on github?) doxygen html documentation
- Windows package/installer with cmake/NSIS?
- automate source-package building from github and periodic upload to launchpad (?)