关于SDL的分辨率和准确度

时间:2012-03-25 08:49:08

标签: c++ sdl

我正在用SDL编写程序。我将屏幕设置为600x600。然后我在窗户上画了一个圆圈。我用点随机拍摄整个屏幕,最后计算圆圈中有多少个点,可用于估算圆的面积。但我发现如果我将窗口初始化为更大(如1024 * 768),那么相同的方法将降低区域计算的准确性(在很小程度上但仍然不是那么小)。我想知道增加windows的分辨率无助于提高这个问题的分辨率?那么我怎样才能利用更大的分辨率呢?

1 个答案:

答案 0 :(得分:0)

  然后我在窗户上画了一个圆圈。我用点随机拍摄整个屏幕,最后计算圆圈中有多少个点,用于估算圆的面积。

圆的面积等于pi*(r^2)。哪里" r"是圆半径。

  

但我发现如果我将窗口初始化为更大的

除非随机数生成器完美,否则你的方法不会产生可靠的结果。这意味着它必须产生完全均匀的点分布,这是不会发生的。此外,您还需要了解一个" hit"的区域,这将是一个大问题。

如果你坚持重新发明轮子(并且因为未知原因而避免使用pi*(r^2)),那么而不是"拍摄随机点"。只需逐行扫描图像,并计算圆内的点数。它也可能比试图滥用伪随机数生成器快得多。并且您可以加速处理(通过丢失精度)而不是检查每个像素,检查每第2个像素(和行),每3个,每4个等等(完美均匀分布)。它比您的PRNG滥用更加可靠和可预测。