`0.2.0`

ΒΆ

**Primary feature**:`Surface.intersect()`

method added- To support intersection, needed
`CurvedPolygon`

type, i.e. an object defined only by its curved sides (whereas a`Surface`

may have interior control points) - Added
`Curve.specialize()`

method for chopping a`Curve`

at arbitrary parameter values (this is also used in surface-surface intersection) - Added images to most documented functions and methods to illustrate
the concept at hand. For example the
`classify_intersection()`

helper has**seven**images to enumerate all of the possible cases covered in the algorithm. - Added
`Surface.locate()`

method, made possible by the`newton_refine()`

helper - Added Algorithm
Helpers
doc to try to explain some of the core algorithms at work (not all
are documented yet). Some of this content was previously documented
in the
`bezier.curve`

module, but was moved. Since, documentation has been added for`get_curvature`

,`newton_refine`

(for surfaces),`classify_intersection`

(to determine how two curves interact while intersecting) and for some helper classes. - Added
`Surface.base_x`

,`Surface.base_y`

and`Surface.width`

properties to allow tracking a sub-surface during the subdivision process (this is an analogue to the`Curve.start`

and`Curve.end`

properties) - Added
`Curve.edge_index`

,`Curve.next_edge`

and`Curve.previous_edge`

properties to allow tracking when curves are actually the sides of a`Surface`