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已就位,请先复制向量。发布这些测试基本上是无用的,因为我们看不到向量是什么。我遇到麻烦了吗???