Math 将产品缩小到最大总尺寸
如果我有产品:Math 将产品缩小到最大总尺寸,math,Math,如果我有产品: float d = ( a * b * c ); 如果它超过了某个最大值(在我的例子中是e),我如何减少a、b和c项以使其适合 if ( d > e ) { // reduce a, b and c by some fixed percentage, such that ( a * b * c ) == e } 这可能真的很简单,但我搞不懂 通过总比率的立方根对它们进行缩放 fac = exp(log(e/d)/3) a *= fac b *= fac c *=
float d = ( a * b * c );
如果它超过了某个最大值(在我的例子中是e),我如何减少a、b和c项以使其适合
if ( d > e )
{
// reduce a, b and c by some fixed percentage, such that ( a * b * c ) == e
}
这可能真的很简单,但我搞不懂 通过总比率的立方根对它们进行缩放
fac = exp(log(e/d)/3)
a *= fac
b *= fac
c *= fac
按总比率的立方根缩放它们
fac = exp(log(e/d)/3)
a *= fac
b *= fac
c *= fac
#包括
…
双刻度=cbrt(e/d);
新浮点数a=a*刻度;
浮动新_b=b*刻度;
新浮点数c=c*刻度;
请注意,上面计算的new_a*new_b*new_c
可能不完全是e
。它可能略高于。如果您希望产品绝对低于e
,则采用类似scale=cbrt(0.5*e/d)的安全比率代码>#包括
…
双刻度=cbrt(e/d);
新浮点数a=a*刻度;
浮动新_b=b*刻度;
新浮点数c=c*刻度;
请注意,上面计算的new_a*new_b*new_c
可能不完全是e
。它可能略高于。如果您希望产品绝对低于e
,则采用类似scale=cbrt(0.5*e/d)的安全比率代码>您想将它们减少相同的百分比吗?所以a
到b
到c
的比率保持不变?这个问题似乎是离题的,因为它是关于数学的,你想把它们减少相等的百分比吗?因此a
与b
与c
的比率保持不变?这个问题似乎是离题的,因为它是关于数学的