Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript three.js:three.Vector3.sub()行为怪异_Javascript_Three.js - Fatal编程技术网

Javascript three.js:three.Vector3.sub()行为怪异

Javascript three.js:three.Vector3.sub()行为怪异,javascript,three.js,Javascript,Three.js,为什么在这种情况下THREE.Vector3.sub返回(0,0,0) p0 = new THREE.Vector3( 0, 100, 50 ); p1 = new THREE.Vector3( 0, 50, 100 ); dummy = new THREE.Vector3(0,0,0); p1_relative_to_p0 = dummy.sub(p1, p0); console.log(p1_relative_to_p0); 这是THREE.Vector3原型的子功能: sub: func

为什么在这种情况下THREE.Vector3.sub返回(0,0,0)

p0 = new THREE.Vector3( 0, 100, 50 );
p1 = new THREE.Vector3( 0, 50, 100 );
dummy = new THREE.Vector3(0,0,0);
p1_relative_to_p0 = dummy.sub(p1, p0);
console.log(p1_relative_to_p0);
这是THREE.Vector3原型的子功能:

sub: function ( a, b ) {
    this.x = a.x - b.x;
    this.y = a.y - b.y;
    this.z = a.z - b.z;
    return this;
},
控制台输出:

3.Vector3 x:0 y:0 z:0

为什么输出不是(0,50,-50)

代码可以在这里看到:

我试图复制该行为,但它完全按照您的预期工作。有没有可能您只是意外地从错误的区域读取了值?

您成为了
控制台.log
警告的受害者。在Chrome中,记录的对象在展开时进行计算,而不是在记录时进行计算

由于
返回此
,因此
p1\u relative\u to\u p0==dummy是正确的。您稍后会更新
dummy
,因此也会更新
p1\u relative\u to\u p0
,因为对象在JavaScript中共享。当您展开对象时,您正在有效地读取
dummy
的内容,这些内容同时被设置为
0,0,0


尝试设置断点而不是日志来停止执行以观察正确的值。

现在,我已将除一条以外的所有console.log语句移动到注释中。左边的就是你在上面代码中看到的那个。它仍然写着0,0,0(你可以在这里看到我的代码:或者试试这个
console.log(p1\u relative\u to\u p0.x,p1\u relative\u to\u p0.y,p1\u relative\u to\u p0.z)