关心菲尔
答案 0 :(得分:4)
这是一个简单的函数,可以为您提供宽高比(简化和javascript)
function getAspectRatio(w, h)
{
var rem;
var newW = w;
var newH = h;
while (h != 0)
{
rem = w % h;
w = h;
h = rem;
}
newH = newH / w;
newW = newW / w;
alert("Aspect Ratio: " + newW + ":" + newH);
}
getAspectRatio(800,600);
会产生4:3
。
希望这有帮助
编辑:我忘了提及,它计算两个数字的gcd并且不检查除零,所以你可能想要添加它。 :)
答案 1 :(得分:2)
伪代码:
newWidth = newHeight / oldHeight * oldWidth
OR
newHeight = newWidth / oldwidth * oldHeight
答案 2 :(得分:0)
如果你的意思是高度和宽度的宽高比,它只是高度/宽度减少到最大公因数。
例如,如果您的显示器是1600 x 1200,则1600/1200减少到4/3。要做到这一点:
在数学术语中,你必须找到“最大公因子”并将两个值(1600和1200)除以它。在这种情况下,它是400。
非常简单(和相对)的算法是:
for i <= min( 1600, 1200 ); i > 0; --i );
if( 1600 % i == 0 && 1200 % i == 0 ) {
minTop = 1600 / i;
minBottom = 1200 / i;
break;
}
}
你的回答是minTop / minBottom。分别用所需的宽度和高度替换1600和1200.
基本上,算法是这样的:从两个数中较小的数字倒计算,找到1600和1200均匀分配的第一个数字(使用mod运算符,所以余数== 0)。最终会达到400.这会带来(1600/400)/(1200/400)或4/3。
希望这会有所帮助;对任何问题发表评论,我会尽力提供帮助。