Allegro 5 api
#include <allegro5/allegro_primitives.h> void al_calculate_spline(float* dest, int stride, float points[8], float thickness, int num_segments)
Calculates a Bézier spline given 4 control points. If thickness <= 0, then num_segments of points are required in the destination, otherwise twice as many are needed. The destination buffer should consist of regularly spaced (by distance of stride bytes) doublets of floats, corresponding to x and y coordinates of the vertices.
Parameters:
dest - The destination buffer
stride - Distance (in bytes) between starts of successive pairs of coordinates
points - An array of 4 pairs of coordinates of the 4 control points
thickness - Thickness of the spline ribbon
num_segments - The number of points to calculate
al_draw_spline(3alleg5), al_calculate_arc(3alleg5), al_calculate_ribbon(3alleg5)