I am drawing circular arcs using the Windows GDI function Arc. It takes for arguments the bounding box of the circle and two points that delimit the starting and ending angles (not the angles themselves).
When I pass the arguments as below, I get an abnormal result. Instead of a quasi-flat arc of a circle with a large radius (about 13069, the bounding box is a square), I get the output as on the picture (rotated; the second version shows the placement of the two endpoints; the third is the expected output).
Arc(hDC, -25660, -12837, 477, 13300, 475, 462, 476, 66);
I suspect that the anomaly is due to the large radius/flatness of the arc, though the coordinates aren't so huge. Do you have any explanation ? My main concern is to find the conditions under which such noticeable features arise, in order to work around them.
Here is a simple console application that produces the problem:
#include <Windows.h>
int main(int argc, char* argv[])
{
HDC hDC= GetDC(GetForegroundWindow());
SelectObject(hDC, GetStockObject(WHITE_PEN));
// Right
Arc(hDC, -16, 37, 457, 510, 475, 462, 476, 66);
// Wrong
Arc(hDC, -25660, -12837, 477, 13300, 475, 462, 476, 66);
return 0;
}