提问人: 提问时间:11/7/2015 更新时间:11/10/2015 访问量:183
GDI 中的数值精度限制?
Numerical accuracy limitation in GDI?
问:
我正在使用 Windows GDI 函数 Arc 绘制圆弧。它采用圆的边界框和两个分隔起始角和结束角(而不是角度本身)的点作为参数。
当我传递如下参数时,我得到一个异常的结果。我得到的输出不是大半径的圆的准平弧(大约13069,边界框是正方形),而是如图所示(旋转;第二个版本显示了两个端点的位置;第三个是预期的输出)。
Arc(hDC, -25660, -12837, 477, 13300, 475, 462, 476, 66);
我怀疑异常是由于弧的半径/平坦度大,尽管坐标不是那么大。你有什么解释吗?我主要关心的是找到出现这些明显特征的条件,以便解决它们。
下面是产生问题的简单控制台应用程序:
#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;
}
答: 暂无答案
上一个:特征浮点精度
评论