#ifndef PHP_SDL3_HELPER #define PHP_SDL3_HELPER #include #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