2016-12-11 3 views
-2

Ich bin ein Vektorobjekt zu schaffen, die als die folgende Funktion:2D-Vektor überprüfen die Größe

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()); 

}; 

In diesem ich versuche es mit der dieser Spezifikation zu machen erfüllen:

„Ihre Vector-Objekt sollte eine 'limitTo'-Funktion, die eine einzelne Skalarzahl als Parameter verwendet Die Funktion sollte ein neu konstruiertes Vector-Objekt zurückgeben, das die gleiche Richtung wie der' this'-Vektor hat, aber wenn seine Größe den gegebenen Parameterwert überschreitet, wird es reduziert in der Größe, um dem maximalen Wert gleich zu sein Die Richtung des Vektors sollte nicht beeinflusst werden, nur die Größe kann geändert werden Höhe des Vektors überschreitet nicht den Maximalwert, dann sollte es nicht verändert werden. "

Und ein Jasmin Test:

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); 
    }); 
}); 

habe ich die Größe nicht Grenze überschreitet, aber haben Probleme mit dem Überschreitung Limit-Test bekommen.

+0

Die Veröffentlichung dieser Tests ist im Grunde nutzlos, weil wir nicht sehen können, was "Vektor" ist. – Oriol

+0

"habe Probleme" ??? –

Antwort

0

Sie haben Ihre Methoden nicht eingeschlossen, aber das Zuweisen einer Zahl zu einer Methodeneigenschaft scheint falsch zu sein. Wahrscheinlich wollen Sie

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

Wenn this.normalise() an Ort und Stelle ist, kopieren Sie Ihre Vektor zuerst.

Verwandte Themen