do_arc(3)

πŸ“¦ version 4.4.3.1, in fedora 43, fedora 44

πŸ’« do_arc(3) β€” bestie edition πŸ’«

Allegro manual Β· do_arc Β· Allegro game programming library

okay so picture this: you want an arc, and you want it custom. do_arc is literally the girl who walks the whole arc for you and calls your function at every single point along the way. she's giving personalized. she's giving bespoke. πŸ’…


✨ NAME ✨

do_arc β€” Calculates all the points in a circular arc. Allegro game programming library.


🌸 SYNOPSIS 🌸

#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));

πŸŽ€ DESCRIPTION πŸŽ€

So basically: it calculates all the points in a circular arc around point (x, y) with radius r, and for each one it calls the function you hand it. Every. Single. Point. She's thorough, she's dedicated, she's your girl. 🫢

That function gets passed:

  • a copy of the bmp parameter
  • the x and y position
  • a copy of the d parameter

which means it is suitable for use with putpixel(). it's giving "designed for exactly this". πŸ‘‘

The arc gets 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, bestie:

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);

like. an explosion ring. via a callback. that's main character energy fr fr. πŸ”₯


πŸ‘€ SEE ALSO πŸ‘€


k bye bestie, go draw something gorgeous πŸ’–βœ¨πŸŒΈπŸ¦‹πŸŽ€

this has been Allegro, version 4.4.3, and yeah that date is right there in the footer: do_arc(3) πŸ’…

πŸ“¦ where this page comes from