`0.2.0`

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

method addedTo 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()`

helperAdded 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`