gpt4 book ai didi

javascript - 为什么 Js 将变量更改为 Nan 并弄乱其他向量

转载 作者:行者123 更新时间:2023-12-02 22:43:22 24 4
gpt4 key购买 nike

所以我是 Javascript 的新手,我正在尝试通过大量搜索来尽快学习它!但我似乎找不到任何解决方案。总而言之,我正在用 Js 编写一个程序,用于检测球之间的碰撞并处理它们。每个球都有一个表示球运动方向的“moveDirection”向量、一个保存球当前位置的位置向量和一个速度(标量)。所有向量都有 3 个变量(x、y、z),并且球仅在 x 和 z 变量中移动。我试图在此函数中处理球之间的碰撞:

function reactToCollision(b1, b2) {
let pos1 = b1.position.clone();
let pos2 = b2.position.clone();
let v1 = b1.moveDirection.clone();
let v2 = b2.moveDirection.clone();

let a = (v1.sub(v2)).dot((pos1.sub(pos2)));
let b = Math.pow((pos1.sub(pos2)).length, 2);
let c = (pos1.sub(pos2)).multiplyScalar(-a / b);
b1.moveDirection.addScalar(c);

let d = (v2.sub(v1)).dot(pos2.sub(pos1));
let e = Math.pow((pos2.sub(pos1)).length, 2);
let f = (pos2.sub(pos1)).multiplyScalar(-d / e);
b2.moveDirection.addScalar(f);

b2.velocity = b1.velocity;
}

这是我调用该函数的地方:

function moveBall(ball, deltatime) {
let ballCollided = collision(ball);
if (ballCollided != null) {
reactToCollision(ball, ballCollided);
if (findBall(ballCollided.name) == null) {
movingBalls.push(ballCollided.name);
}
}
ball.position.x += ball.moveDirection.x * ball.velocity;
ball.position.z += -ball.moveDirection.z * ball.velocity;
ball.velocity -= deltatime * friction;
}

问题是球的position.x和position.z现在是NaN,并且moveDirection向量现在非常奇怪,如下所示:

x: "-0.23202599585056305[object Object]"
y: "0[object Object]"
z: "0.9727095907821058[object Object]"

我非常感谢有人的帮助和耐心来帮助我解决这个问题!非常感谢您来到这里!

最佳答案

我真的不知道问题出在哪里,因为您调用了许多不同的方法,但这里有一些基本规则可能会弄乱您的代码并导致这些结果:
如果您对数字和其他类型进行任何算术运算(+ 除外),那么您将得到 NaN,如下所示:

console.log(51 * 'hello');   // prints NaN
console.log(51 / undefined); // prints NaN
console.log(51 - {}); // prints NaN

+ 有点不同,这里 JS 会尝试将它们转换为通用类型,在我们的例子中是 string 。当您将对象转换为字符串时,您将得到 '[object Object]' 所以

console.log(53 + 'Hello'); // prints "53Hello"
console.log(53 + {}); // prints "53[object Object]"
console.log(53 + [1, 2]); // prints "531,2" - [1, 2] is converted into '1,2'

关于javascript - 为什么 Js 将变量更改为 Nan 并弄乱其他向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58515215/

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