Javascript 数学:3个旋转刻度盘,3个值应始终=100%

Javascript 数学:3个旋转刻度盘,3个值应始终=100%,javascript,math,Javascript,Math,我有三个表盘:D1、D2和D3。它们的值应始终为100%,默认值分别为50%、25%和25% 当用户编辑D2或D3时,D1应充当第一个从中取出并放入的罐 问题出在这里:如果可编辑的刻度盘增加到超过D1保留点怎么办?我需要找到一种方法,使拨号盘的剩余拉力在此时不被编辑 我想我正在寻找一个优雅的解决方案,而不是黑客。有人有这样的解决办法吗 您要做的是解一个由三个函数组成的方程,如: X + Y + Z = K; 其中: X = x + a(dx) Y = y + b(dy) Z = z + c(

我有三个表盘:D1、D2和D3。它们的值应始终为100%,默认值分别为50%、25%和25%

当用户编辑D2或D3时,D1应充当第一个从中取出并放入的罐

问题出在这里:如果可编辑的刻度盘增加到超过D1保留点怎么办?我需要找到一种方法,使拨号盘的剩余拉力在此时不被编辑

我想我正在寻找一个优雅的解决方案,而不是黑客。有人有这样的解决办法吗


您要做的是解一个由三个函数组成的方程,如:

X + Y +  Z = K;
其中:

X = x + a(dx)
Y = y + b(dy)
Z = z + c(dz)
K = 100

  • a
    b
    c
    是函数
  • x
    y
    z
    是旋钮和按钮的当前值
  • dx
    dy
    dz
    是旋钮值的变化
  • 函数在给定K值(始终为100)和
    X
    Y
    Z
    中的一个值的情况下求解,其中
    X
    Y
    Z
    在0到100范围内


    X
    Y
    Z
    接近0或100时,您不会说应该发生什么-它们是否成比例减少,或者,超出或不足的部分是否适用于另一个非用户调节旋钮?

    只需将另外两个旋钮移动用户移动旋钮的一半。我问了我的问题,但没有详细说明为什么这是不够的。我将编辑以进一步解释拨盘1作为“保留”的概念@ChristopherBorgia如果你不能解释拨盘值的逻辑,那么对于希望提供帮助的人来说,这将是一个猜测游戏。只需将D1移动到其极限,然后移动另一个拨盘以接受剩余的更改。你真的没有更多优雅的选择了。谢谢@RobG给了我开始工作的方向。克里斯托弗,这通常是用微分学和相关的速率来解决的,因为你会有一个方程,其中有两个未知数,必须满足其他方程。通过估计其中一个未知数并求解另一个未知数,您可能会得到一个合理的解决方案。这只会让你接近,所以用结果做一个更好的估计,然后再继续,直到它足够接近。它在踢我的屁股。无论我做什么,他们也不会像我所期望的那样做出反应。我会继续尝试,但如果你有任何更多的建议,这将有很大帮助(哦,按比例减少是我要做的)。