/* See LICENSE file for copyright and license details. */ #include "common.h" #ifndef TEST void rtgrpblib_draw_elliptical_arc(RASTER *restrict raster, double x0, double y0, double semiwidth, double semiheight, double start, double end) { double inc, v, x, y, prevX, prevY; if (start == end) return; /* TODO precalculate intersection with raster box */ inc = fmax(semiwidth, semiheight); inc *= 2 * M_PI; inc *= end - start; inc = raster->draftness / inc; v = start; prevX = x0 + semiwidth * cos(start); prevY = y0 + semiheight * sin(start); for (; (v += inc) < end; prevX = x, prevY = y) { x = x0 + semiwidth * cos(v); y = y0 + semiheight * sin(v); rtgrpblib_draw_linear_bezier(raster, prevX, prevY, x, y); } x = x0 + semiwidth * cos(end); y = y0 + semiheight * sin(end); rtgrpblib_draw_linear_bezier(raster, prevX, prevY, x, y); } #else int main(void) { return 0; /* TODO add test */ } #endif