Allegro 5 api
#include <allegro5/allegro_primitives.h> void al_calculate_arc(float* dest, int stride, float cx, float cy, float rx, float ry, float start_theta, float delta_theta, float thickness, int num_segments)
Calculates an elliptical arc, and sets the vertices in the destination buffer to the calculated positions. If thickness <= 0, then num_points 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
cx, cy - Center of the arc
rx, ry - Radii of the arc
start_theta - The initial angle from which the arc is calculated
delta_theta - Angular span of the arc (pass a negative number to switch direction)
thickness - Thickness of the arc
num_points - The number of points to calculate
al_draw_arc(3alleg5), al_calculate_spline(3alleg5), al_calculate_ribbon(3alleg5)