3d里求两点的旋转角度

var src = newNode.getChildByName(“src”).getPosition();

var dst = newNode.getChildByName(“dst”).getPosition();

var no = dst.subtract(src).normalize();

var q = Quat.fromAxisAngle(quat(), no, Math.PI);

console.log(q.getEulerAngles(v3()));

newNode.getChildByName(“src”).setRotation(q);

这里求出来的错误的。
Quat.fromAxisAngle 这个里面的第三个参数传什么值?

在线求大神指点。。。 :joy: :joy: :joy:

如果只是求2个点之间的角度,就是求2个向量之间的夹角。求两个向量之间的夹角用点乘和叉乘就能求出来了。

想求出3d的四元数

顶一下,求解

旋转弧度。

请问 Quat.fromAxisAngle 这第3个参数怎么求出来的?

这个不用求啊,你愿意给它转多少弧度就转多少弧度

求两点夹角的话试试Math.atan2方法呗

想求3d空间的。
看到https://forum.cocos.org/t/3d/85374/5
直接用 destinationVec3.subtract(originVec3) 就可以得到方向向量了,然后归一化,最后使用 Quat.fromAxisAngle 来计算表示角度的 Quaternion

相求3d物体朝向,但是一直不知道fromAxisAngle 怎么算的
已知src,dst两点,求src的朝向

点乘就可以了

Math.atan2只能用于2d平面角度,在3d里不适用

百度了下其实大概意思是通过这个方法能同时求出两物体的3个方向的旋转角度,但游戏实际应用中很大一部分物体都是同一高度的,实际上是能看成平面计算的
另外通过平面计算的方式计算两次也能算出不同高度的两个物体旋转角度

如果在一个倾斜10度的平面,用Math.atan2怎么求在这个平面上两个方向的夹角?

先假设高度相同求y轴旋转角,在假设x轴相同求z轴旋转角,再假设z轴相同,就能求x轴旋转角了