gpt4 book ai didi

Javascript 添加向量 2D 图形

转载 作者:行者123 更新时间:2023-12-03 05:39:37 25 4
gpt4 key购买 nike

我对 JavaScript 还很陌生,目前我真的很挣扎!我正在做一个 2D 图形模块,并且已经进行了一些需要传递向量的测试。我被困在添加功能上。要通过测试,它说我需要:

添加函数 - 您的 Vector 对象应该有一个“add”函数,该函数将单个 Vector 对象作为它的参数。该函数应返回一个新构造的 Vector 对象,该对象是添加带有参数 Vector 的“this”向量。

这是我到目前为止的代码:

 var Vector = (function () {
function Vector(pX, pY) {
this.setX(pX);
this.setY(pY);

}
Vector.prototype.getX = function () {
return this.mX;
};
Vector.prototype.setX = function (pX) {
this.mX = pX;
};
Vector.prototype.getY = function () {
return this.mY;
};
Vector.prototype.setY = function (pY) {
this.mY = pY;
}

//this is my attempt at the add function
Vector.prototype.add = function (x, y) {
var a = this.mX + x;
var b = this.mY + y;
return Vector(a, b);
}


return Vector;
}());

这是它需要通过的测试:

  describe("Add", function () {
var secondVector, thirdVector;
secondVector = new Vector(20, 30, 0);
thirdVector = vector.add(secondVector);

it("X Set", function () {
expect(thirdVector.getX()).toEqual(50);
});
it("Y Set", function () {
expect(thirdVector.getY()).toEqual(70);
});
});

抱歉,如果这令人困惑,我仍在掌握术语并理解一切的含义。如果您有任何不明白的地方,请告诉我。

提前谢谢您。

最佳答案

我们不只是给您答案,而是分解问题以帮助您理解。

Add function – your Vector object should have an ‘add’ function that takes a single Vector object as its parameter.

这意味着您需要创建一个名为 add 的函数并将其放在矢量对象上。你已经正确地做到了这一点。但是,它随后表示采用单个 Vector 对象作为其参数。您当前提供两个参数:xy

// this should not provide x & y, but a previously created vector
Vector.prototype.add = function (x, y) {

// so your function definition should look something like this
// where vec is a different Vector created elsewhere.
Vector.prototype.add = function(vec) {

The function should return a newly constructed Vector

你几乎已经正确了,你只是缺少了“new”这个词。我建议您阅读有关 new here 的更多信息,因为这很重要。

Vector object that is the result of adding the ‘this’ Vector with the parameter Vector.

因为您是在 prototype 上创建 add 函数,所以每当您在函数内使用 this 时,都意味着您正在查看调用 add 函数的对象的实例。你在那里写的是正确的。唯一的问题是您添加的是 xy 参数,而不是另一个 Vector 对象中的 x 和 y。

关于Javascript 添加向量 2D 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40599043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com