Bound all edges by vertices #1020
Labels
topic: core
Issues relating to core geometry, operations, algorithms
type: development
Work to ease development or maintenance, without direct effect on features or bugs
Edge
s are defined by two things:Except, this is not completely true. There are also continuous edges, which are edges that connect to themselves and don't have any vertices to bound them. They can only exist on continuous curves (curves that connect to themselves; right now only circles are supported).
This exception causes quite a few problems:
fj-kernel
that handles this special case in all kinds of circumstances.I believe that all of these problems can be solved by abolishing the concept of continuous curves (and, by extension, continuous surfaces and faces) and making sure that all
Edge
s are bound by vertices (and, by extension, all faces are bound by edges). This promises a lot of simplification, which would pay dividends (in saved work) pretty quickly.This isn't a new idea. In fact, I believe this is a pretty normal way to do CAD kernels, and I mentioned this previously in #250. I didn't want to do it earlier, because a) I'm a bit of an idiot, and b) I didn't see a clear way to do this. The kernel data structures have improved a lot over the last months though (#691 was a big one, in this context), so it should now be possible to implement this relatively easily.
Over the last week or so, I've been working on this, and I've made big strides towards making it possible, by updating the approximation code to support this new notion of edges (#1003, #1006, #1011, #1012, #1013). I also have a work-in-progress branch that starts making the actual change to
Edge
(#1019), but unfortunately this causes issues in the sweep algorithm.For now, I will turn my attention to other things, but I expect that I'll have the opportunity to address this soon. The sweep algorithm is also blocking #993, which in turn is blocking my top priority, boolean operations (#42, #43, #44). Once the sweep algorithm is sorted out, this will hopefully become easy to finish.
The text was updated successfully, but these errors were encountered: