Javascript 二维向量检查大小

Javascript 二维向量检查大小,javascript,vector,Javascript,Vector,我正在创建一个向量对象,它具有以下功能: 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.g

我正在创建一个向量对象,它具有以下功能:

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

};
在此,我试图使其符合此规范:

向量对象应该有一个“limito”函数,该函数将单个标量数作为其参数。该函数应返回一个新构造的向量对象,该对象的方向与“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);
    });
});

我的震级没有超过限制,但是我在获得超出限制测试时遇到了问题。

您没有包括您的方法,但是为方法属性指定一个数字似乎是错误的。很可能是你想要的

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

如果此.normalise已就位,请先复制向量。

发布这些测试基本上是无用的,因为我们看不到向量是什么。我遇到麻烦了吗???