当两个向量的Y为零时,Vector3D.angleBetween返回NaN

时间:2013-01-10 10:49:53

标签: actionscript-3 vector

我正在努力寻找使用内置函数

在两个向量之间找到角度的问题
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);

这将返回angle1和angle2

的NaN

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

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

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

1 个答案:

答案 0 :(得分:4)

Vector(0,0,0)具有无限角度和0大小(来自df。)。这就是为什么两者之间没有角度的原因。 你可以添加

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

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