Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

81 lines (70 sloc) 4.332 kb
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.
- calling vd.check() after a "debug-mode" insert_line_site(id1,id2, step) (where e.g. step=5) causes a segfault
make this fail more gracefully.
- chain_5_collinear2.py exposes a case where a desperate solution is returned, because we fail to detect this
as a case for the sep_solver.
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.
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)
-- hilbert curve?
-- GIS-data
-- 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 (?)
DONE:
- 2012-01-25 new SEPSolver when we have a line-segment site and its endpoint
Jump to Line
Something went wrong with that request. Please try again.