Index: work/alien_formats/easyeda/arc_testbench/arc_sed.c =================================================================== --- work/alien_formats/easyeda/arc_testbench/arc_sed.c (revision 39203) +++ work/alien_formats/easyeda/arc_testbench/arc_sed.c (revision 39204) @@ -28,19 +28,20 @@ static int arc_sed_small(double sx, double sy, double ex, double ey, double deg, double *cx_out, double *cy_out, double *r_out, double *srad, double *erad) { double cx, cy, r; - double mx, my; - double chlen, chvx, chvy, chnx, chny; /* chord */ + double mx, my, mr; + double chlen, chvx, chvy, chnx, chny, chl2; /* chord */ double delta = deg * DEG2RAD; /* chord middle point, length and normal vector */ mx = (sx + ex) / 2.0; my = (sy + ey) / 2.0; chvx = ex - sx; chvy = ey - sy; - chlen = sqrt(chvx*chvx + chvy*chvy); + chlen = sqrt(chvx*chvx + chvy*chvy); chl2 = chlen/2.0; chvx /= chlen; chvy /= chlen; chnx = -chvy; chny = chvx; r = (chlen/2.0) / sin(delta/2.0); - cx = mx + chnx * r; cy = my + chny * r; + mr = sqrt(r*r - chl2*chl2); + cx = mx + chnx * mr; cy = my + chny * mr; *cx_out = cx; *cy_out = cy;