保持方形尺寸增加尺寸

时间:2014-08-05 14:10:30

标签: javascript math

我需要在Javascript中以固定增量增加一个框大小,但也要保持方形大小。我认为应该有一个简单的'数学函数,但我无法弄明白。我尝试使用pow()sqrt()以及if if语句,但似乎没有什么可行的。

示例: 假设我有一个(WxH)54 x 45的盒子,我的增量是10,我想增加高度(用一个按钮)。正常增量为10时,高度将变为55,但我希望它首先返回值54,因此框变为方形。一旦它54,我再次增加高度,它应该再次继续55.

  1. 所以我的盒子是(WxH)54 x 45
  2. 用户点击按钮" +"增加高度
  3. Box应成为(WxH)54 x 54
  4. 用户点击按钮" +"再次增加高度
  5. Box应成为(WxH)54 x 55
  6. 用户点击按钮" +"再次增加高度
  7. Box应成为(WxH)54 x 65
  8. 依旧......
  9. 宽高比并不重要。

    我希望有人可以帮助我,或者至少指出我正确的方向。谢谢!

2 个答案:

答案 0 :(得分:1)

powsqrt和喜欢的人不会帮助你,你只需做一个特例。像这样:

var step = 10, squareCase = null;

function increaseWidth() {
  if (squareCase !== null) {   // we are currently at the square case
    width = squareCase + step; // resume from remembered
    squareCase = null;         // and leave the special case
  }
  else if (width < height && width + step > height) {
    squareCase = width;       // remember value so we can resume sequence
    width = height;           // do the square now
  }
  else {
    width = width + step;     // default case
  }
}

在编写相应的递减时,请记住squareCase变量包含值 previous 以递增,因此它应包含递减情况下已经递减的值。

答案 1 :(得分:0)

这不是你的要求,但看起来应该是这样的:

var boxGetter = function(w, h){
    // anonymouse function setting the original width and height
    return {
        // get the new height 
        // pass in the new width
        height: function(nw){
            return (w / h) * nw;
        },
        width: function(nh){
            return (h / w) * nh;
        }
    }
}

var getter = boxGetter(54, 45);

console.log(getter.height(54+10)); // 66
console.log(getter.width(45+10)); // 45.83