sdl3/php-sdl3/helper.h
2025-10-25 22:04:24 +02:00

37 lines
1.3 KiB
C

#ifndef PHP_SDL3_HELPER
#define PHP_SDL3_HELPER
#include <SDL3/SDL.h>
#include "math.h"
static void draw_hline(SDL_Renderer *renderer, int x1, int x2, int y) {
if (x2 < x1) return;
SDL_RenderLine(renderer, x1, y, x2, y);
}
// Zeichnet einen gefüllten Viertel-Kreis (filled quarter circle).
// quadrant: 0 = top-left, 1 = top-right, 2 = bottom-right, 3 = bottom-left
static void filled_quarter_circle(SDL_Renderer *renderer, int cx, int cy, int r, int quadrant) {
if (r <= 0) return;
int r2 = r * r;
for (int dy = 0; dy <= r; ++dy) {
// dy ist vertikale Distanz vom Kreiszentrum (0..r)
int dx = (int)floor(sqrt((double)r2 - (double)dy * dy));
switch (quadrant) {
case 0: // top-left: y = cy - dy, x in [cx - dx, cx]
draw_hline(renderer, cx - dx, cx, cy - dy);
break;
case 1: // top-right: y = cy - dy, x in [cx, cx + dx]
draw_hline(renderer, cx, cx + dx, cy - dy);
break;
case 2: // bottom-right: y = cy + dy, x in [cx, cx + dx]
draw_hline(renderer, cx, cx + dx, cy + dy);
break;
case 3: // bottom-left: y = cy + dy, x in [cx - dx, cx]
draw_hline(renderer, cx - dx, cx, cy + dy);
break;
}
}
}
#endif