【发布时间】:2011-03-31 12:38:08
【问题描述】:
我需要找到纵横比恰好(或在 0.001 以内)某个值的 最小 尺寸。是否有任何快速的数学技巧或框架技巧可以做到这一点?
这是我在 O(n^2) 中运行的当前 bad 想法的伪代码:
epsilon = 0.001;
from x = 1 to MAX_X
{
from y = 1 to MAX_Y
{
if(Abs(x / y - aspectRatio) <= epsilon)
{
return new Size(x, y);
}
}
}
return Size.Empty;
【问题讨论】:
-
为什么是
Abs(..)?这个数字永远不会是负数... -
基本上你想找到十进制值的最小分数(=最小纵横比)。我确定这是一道 GCSE 数学题,但我现在不记得是怎么回事了,哈哈
-
对于初学者,我认为您的伪代码是错误的,除非我误解了它,它绝不是指纵横比值..
-
你正在做的事,再看一遍,就是找到一个等于
0.001的分数(即,像 x = 1 和 y = 1000)。但是根据您的描述,我会说您有一个比率,例如3.8并找到等于该比率的 x 和 y,即 x = 38 和 y = 10(假设只需要整数),最大偏差为epsilon(即 38001 和 1000 也是一个很好的答案)。那是对的吗?如果是这样,一个问题是偏差与因素无关。我认为它应该是一个百分比。