Three.js Vector.angleTo。如何也得到更大的值

问题描述 投票:1回答:1

给定一个向量 v1=(0,0,1) 和两个向量 v2=(1,0,0)v3=(-1,0,0) 我希望 v1.angleTo(v2)v1.angleTo(v3) 以返回不同的结果,即 12 PI32 PI.

然而,两者都返回 12 PI:

var v1 = new THREE.Vector3(0, 0, 1);
var v2 = new THREE.Vector3(1, 0, 0);
var v3 = new THREE.Vector3(-1, 0, 0);

v1.angleTo(v2)
1.5707963267948966

v1.angleTo(v3)
1.5707963267948966

看来 angleTo 总是返回较小的角度,即介于 0PI.

怎样才能得到预期的价值行为?

three.js
1个回答
1
投票

angleTo 总是返回较小的角度。参见 angleTohttps:/github.commrdoobthree.jsblobmastersrcmathVector3.js。.

如果角度应始终在一个方向上确定(即逆时针方向或顺时针方向),那么对于二维向量(或二维平面内平行于坐标系两轴平面的n-d向量,如题中所举的例子),简单的解决方法是:。

var orientation = v1.x * v2.z - v1.z * v2.x;
if(orientation > 0) angle = 2*Math.PI - angle;
© www.soinside.com 2019 - 2024. All rights reserved.