三维空间怎么计算两点之间的角度

看了一下cocos2d-x里写的Vec3::angle()方法,这个方法有点相当然了,不知道有没有验证过
float Vec3::angle(const Vec3& v1, const Vec3& v2)
{
float dx = v1.y * v2.z - v1.z * v2.y;
float dy = v1.z * v2.x - v1.x * v2.z;
float dz = v1.x * v2.y - v1.y * v2.x;

return atan2f(sqrt(dx * dx + dy * dy + dz * dz) + MATH_FLOAT_SMALL, dot(v1, v2));

}
返回一个float值,在三维空间,这个float表示哪个面的夹角?

返回的应该是一个Vec3的值才对

问的有点想当然了吧,两个点之间会有角度???(黑人问号)

两个矢量v1=(x1,y1,z1),v2=(x2,y2,z2)之间的夹角是v1,v2映射到一个与他们同时平行的平面上的夹角;
按照上面的方法,欲求v1和v2在xy平面的夹角使用angle方法计算(x1,y1,0)与(x2,y2,0)即可,同理可得到yz,zx平面夹角。
建议看一下大一线性代数知识~

所以啊,在三维空间,向量与三个平台的投影之间的夹角应该是三个角,他这个方向只返回一个float,那这个是指哪个平台的呢

X轴和Y轴相交的平面吧。