do_arc - Calculates all the points in a circular arc. Allegro game programming
library.
#include <allegro.h>
void do_arc(BITMAP *bmp, int x, int y, fixed a1, fixed a2, int
r, int d, void (*proc)(BITMAP *bmp, int x, int y, int d));
Calculates all the points in a circular arc around point (x, y) with radius r,
calling the supplied function for each one. This will be passed a copy of the
bmp parameter, the x and y position, and a copy of the d parameter, so it is
suitable for use with putpixel(). The arc will be plotted in an anticlockwise
direction starting from the angle a1 and ending when it reaches a2. These
values are specified in 16.16 fixed point format, with 256 equal to a full
circle, 64 a right angle, etc. Zero is to the right of the centre point, and
larger values rotate anticlockwise from there. Example:
void draw_explosion_ring(BITMAP *bmp, int x, int y, int d)
{
...
}
do_arc(screen, SCREEN_W/2, SCREEN_H/2,
itofix(-21), itofix(43), 50, flame_color,
draw_explosion_ring);
do_circle(3), do_ellipse(3), do_line(3), arc(3)