2016-12-11 167 views
-2

我創建其爲以下功能矢量對象的大小:2D矢量檢查

Vector.prototype.limitTo = function (pScalar) { 

    this.normalise(); 
    this.multiply(pScalar); 
    if (this.magnitude() > pScalar) { 
     this.magnitude = 30; 
    } 
    return new Vector(this.getX(), this.getY(), this.getZ()); 

}; 

在此,我試圖使它遵守該規範:

「您的矢量對象應有一個'limitTo'函數,它以單個標量數作爲參數,函數應該返回一個新構造的Vector對象,它具有與'this'向量相同的方向,但是如果它的幅度超過了給定的參數值,那麼它將被減少大小等於最大值,矢量的方向應該不受影響,只有大小可以改變矢量的大小不超過最大值,那麼它不應該被改變。「

和茉莉測試:

describe("Limit To", function() { 
    var limitedVector, magnitude; 

    it("Magnitude not exceeding limit", function() { 
     limitedVector = vector.limitTo(60); 
     magnitude = limitedVector.magnitude(); 
     expect(magnitude).toEqual(50); 
    }); 

    it("Magnitude exceeding limit", function() { 
     limitedVector = vector.limitTo(30); 
     magnitude = limitedVector.magnitude(); 
     expect(magnitude).toEqual(30); 
    }); 
}); 

我有幅度不超過上限,但我遇到麻煩超過極限測試。

+0

發佈這些測試基本上是無用的,因爲我們無法看到「矢量」是什麼。 – Oriol

+0

「有麻煩」? –

回答

0

你沒有包括你的方法,但是爲一個方法屬性賦值看起來是錯誤的。最有可能你想

Vector.prototype.limitTo = function (pScalar) { 
    return this.normalise().multiply(Math.min(his.magnitude(), pScalar)); 
}; 

如果this.normalise()是就地,首先複製你的載體。