Previous sections only dealt with links creating straight lines. Arabeske also allows links to be shaped as Bézier curves. These curves add two control points to their vertices, to allow tangent tuning at each vertex. These curves are quite powerful, even if they do not allow everything: a true circle cannot be represented by Bézier curves.
First, draw a plain straight rectangular link. Then, in the "object properties" window, check the "Bézier curve" box. Four input fields become active, containing the coordinates of the control points. At the same time, two little handles appear on the drawing area, allowing to move the control points. They are linked to their respective vertex using dotted lines. Control points can be moves freely, independently of the vertices.
Control points are activated as above, and may be edited on the drawing area the same way as for rectangular links. The main difference concerns the coordinates used for control points. Using rectangular coordinates would not really make sense, and polar coordinates would probably be quite hard to manipulate. Therefore, implicit coordinates (u, v) are used, which call for some explanations.
The first coordinate, u, lies along the segment linking the curve vertices. The origin point has u=0, while the end point is at u=1000. The second coordinate, v, can be found turning u around the origin point 90° counter clockwise. Moreover, v=0 for every point of the straight line crossing both vertices of the curve. Finally, u and v have the same unit length.
This has two main consequences. First, moving any vertex change nothing to the shape of the curve. It will just be turned, moves and scaled, but not distorted. Second, u and v are not defined if both vertices are merged. Therefore, single Bézier curves defined using rectangular coordinates can have any shape and may be closed, while single curves defined using polar coordinates cannot be closed. There is no other difference.
The usual texturing system provided by Arabeske can be used on a curved-based pattern exactly the same way as with pure straight lines. However, intersection calculations are far more complex: for instance, two Bézier curves can have up to nine intersection points. The most obvious consequence is that computing time dramatically increases.
Moreover, while the intersection between two segments can be exactly determined, the intersections between two Bézier curves can only be approximated: it is highly recommended to have clear, clean intersections between curves t avoid pattern leaks.
Finally, even if the outline search algorithm is able to deal with most cases, multiple tangent curves at the same point should be avoided. The exceptional case of two curves which are tangent and have the same curvature at this point is not handled and the result cannot be predicted.
Interlacing curves needs to calculate "offset" curves, and intersection between offset curves. This is not exactly difficult for segments, where offset segments are just obtained through translations. Unfortunately, the offset curve of a Bézier curve is not, generally speaking, a Bézier curve. Lots of articles and dissertations give clues about how such curves can be approximated, but the global complexity and the large amount of corner cases make that, currently, Arabeske is unable to perform such operations. Therefore, as soon as a pattern contains a Bézier curve, the "interlace" option disappears.
As Arabeske always use vector representations and algorithms, Bézier curves are never approximated with segments. As a result, every export mode is supported, either in bitmap or in vector format.