where is the Bernstein basis in degree , on the interval . The subdivision algorithm is also based on a criterion for detecting the regularity of the curve , in the domain .

void topology::assign(point_graph<C> & g, MPol<T>& p1, MPol<T>& p2, TopSbdCurve3d<C> mth, C x0, C x1, C y0, C y1, C z0, C,z1);

- It computes a graph of points
`g`

of type`topology::point_graph<C>`

, which is isotopic to the curve defined by the polynomial`p1`

,`p2`

, in the box . The coordinates of the points in`g`

are of type`C`

. The implementation is designed for`C=double`

.

- The input coefficients of
`p`

are of type`T`

. During the computation, they are rounded to`double`

number types. If the topology in the box can be certified from this approximation, a graph of points connecting the intersection of the curve with the boundary of is computed. Otherwise the box is subdivided into subboxes and the test is applied recursively.

- If the curve has singular points, the subdivision will continue until the size of the box is smaller than the precision specified by the class
`TopSbdCurbe3d<C>`

. The default value is .

`synaps/topology/TopSbdCurve3d.h`

#include <synaps/arithm/gmp.h> #include <synaps/topology/TopSbdCurve3d.h> #include <synaps/base/io/geomview.h> int main(int argc, char** argv) { MPol<double> p1("x^4+y^4+z^4-4*x^2-4*y^2*z^2-4*y^2-4*z^2*x^2-4*z^2-4*x^2*y^2+20.7846*x*y*z+1", Variables("x y z")), p2("4*x^3-8*x-8*x*z^2-8*x*y^2+20.7846*y*z", Variables("x y z")); topology::point_graph<double> g; topology::assign(g, p1,p2, TopSbdCurve3d<double>(), -2.1,2.,-2.15,2.1,-2.1,2.2); geomview::ostream os("tmp.off");os<<g;os.view(); }

Here is a picture of the corresponding result: