1

我正在努力使用内置函数找到两个向量之间的角度的一个奇怪的问题

var v1:Vector3D = new Vector3D(0, 0, 0);
var v2:Vector3D = new Vector3D(50, 0, 50);
//Vector3D(0, 0, 0) Vector3D(50, 0, 50)
var angle1:Number = Vector3D.angleBetween(v1,v2) * 180 / Math.PI;
var angle2:Number = Vector3D.angleBetween(v2,v1) * 180 / Math.PI;

trace(angle1,angle2);

这将返回角度 1 和角度 2 的 NaN

但是,如果我将一个非零值(任何较小的数字,例如 0.00001)作为 y 属性传递给任何向量,那么我会得到数字/角度

出于这个原因,我正在克隆我的向量并在调用此方法之前向 y 添加一个小数字 (0.00001)。

我不确定我做错了什么还是那里的错误。有人可以帮忙吗?

4

1 回答 1

4

Vector(0,0,0) 具有无穷大角度和 0 大小(来自定义)。这就是为什么两者之间没有角度。你可以加

if(angle1 == NaN) {
  //fix
}

让它按照你想要的方式工作。

于 2013-01-10T10:58:27.987 回答