Math 纵横比a计算
下午好。我们遇到了一些我不太擅长的数学问题。有人知道如何计算高度与宽度的比率吗 关于Phil伪代码:Math 纵横比a计算,math,Math,下午好。我们遇到了一些我不太擅长的数学问题。有人知道如何计算高度与宽度的比率吗 关于Phil伪代码: newWidth = newHeight / oldHeight * oldWidth 或 如果你是指一个高度和宽度的纵横比,它只是高度/宽度减少到最大公因数 例如,如果您的显示器是1600 x 1200,它的1600/1200将减少为4/3。为此: 用数学术语来说,你必须找到“最大公因式”,然后将这两个值(1600和1200)除以它。在这种情况下,是400 一个非常简单(相对而言)的算法是:
newWidth = newHeight / oldHeight * oldWidth
或
如果你是指一个高度和宽度的纵横比,它只是高度/宽度减少到最大公因数 例如,如果您的显示器是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;
}
}
用于i0--一),;
如果(1600%i==0&&1200%i==0){
minTop=1600/i;
最小底部=1200/i;
打破
}
}
你的答案是minTop/minBottom。将1600和1200分别替换为所需的宽度和高度
基本上,算法是这样的:从两个数字中的较小者开始倒数,然后找到第一个数字,其中1600和1200被均匀地分成两部分(使用mod运算符,因此余数==0)。最终将达到400。这就导致了(1600/400)/(1200/400)或4/3
希望这有帮助;如果有任何问题,请留下评论,我会尽力提供进一步的帮助。这里有一个简单的函数,可以为您提供纵横比(简化和javascript)
getAspectRatio(800600)代码>结果为4:3
希望这有帮助
G
编辑:我忘了提到,它计算两个数字的gcd,并且不检查是否被零除,所以您可能需要添加它。:) 菲尔·杰克逊相当高。他会有很高的长宽比。肯定会有更多吗?h=344 w=543该比率为??我将在JavaScription中使用它。请提供有关您正在尝试执行的操作的更多信息!否则,高度/宽度似乎是一个完美的答案,这是一个分数简化的问题。344/543是不可还原的,所以这里的纵横比是543:344。如果你不熟悉分数,就玩一玩。什么?如何以编程方式从1333/1000到4/3?最简单的方法是将两者相乘1000,四舍五入,然后乘或除?不断返回NaN:NaN函数calcRatio(){$(“.heightAndWidth”)。按键(函数(e){var-rem;var-newW=20;var-newH=100;while(h!=0){rem=w%h;w=h;h=rem;}newH=newH/w;newW=newW/w;警报(“纵横比:“+newW+”:“+newH”);}
for i <= min( 1600, 1200 ); i > 0; --i );
if( 1600 % i == 0 && 1200 % i == 0 ) {
minTop = 1600 / i;
minBottom = 1200 / i;
break;
}
}
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);
}