# Splitting and Decomposition¶

NURBS-Python is also capable of splitting the curves and the surfaces, as well as applying Bézier decomposition.

Splitting of curves can be achieved via `operations.split_curve()` method. For the surfaces, there are 2 different splitting methods, `operations.split_surface_u()` for splitting the surface on the u-direction and `operations.split_surface_v()` for splitting on the v-direction.

Bézier decomposition can be applied via `operations.decompose_curve()` and `operations.decompose_surface()` methods for curves and surfaces, respectively.

The following figures are generated from the examples provided in the Examples repository.

## Splitting¶

The following 2D curve is split at `u = 0.6` and applied translation by the tangent vector using `operations.translate()` method.

Splitting can also be applied to 3D curves (split at `u = 0.3`) without any translation.

Surface splitting is also possible. The following figure compares splitting at `u = 0.5` and `v = 0.5`.

Surfaces can also be translated too before or after splitting operation. The following figure illustrates translation after splitting the surface at `u = 0.5`.

Multiple splitting is also possible for all curves and surfaces. The following figure describes multi splitting in surfaces. The initial surface is split at `u = 0.25` and then, one of the resultant surfaces is split at `v = 0.75`, finally resulting 3 surfaces.

## Bézier Decomposition¶

The following figures illustrate Bézier decomposition capabilities of NURBS-Python. Let’s start with the most obvious one, a full circle with 9 control points. It also is possible to directly generate this shape via `geomdl.shapes` module.

The following is a circular curve generated with 7 control points as illustrated on page 301 of The NURBS Book (2nd Edition) by Piegl and Tiller. There is also an option to generate this shape via `geomdl.shapes` module.

The following figures illustrate the possibility of Bézier decomposition in B-Spline and NURBS surfaces.

The colors are randomly generated via `utilities.color_generator()` function.