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
的比率保持不变?这个问题似乎是离题的,因为它是关于数学的