我确定这个问题多次重复,但我找不到任何有关我具体问题的答案!
我正在使用html5和THREE.js创建游戏,并且我有一个以'YXZ'的欧拉顺序旋转的相机.
这样摄像机就像头部一样向上,向下,向左和向右旋转.如第一人称视角.
使用此euler顺序,不使用camera.rotation中的z属性(始终为0).x用于指定以弧度表示的音高或纬度,y用于表示经度.
我有许多目标以球形方式围绕用户移动,相机始终位于该球体的中心.可以说球体的半径为1000.
我的目标是计算相机所在的位置和目标所在的位置之间的角度.
我写了这个代码来计算2个向量之间的角度:
var A = new THREE.Vector3(1,0,0);
var B = new THREE.Vector3(0,1,0);
var theta = Math.acos( A.dot(B) / A.length() / B.length() );
// theta = PI/2;
Run Code Online (Sandbox Code Playgroud)
我有目标的矢量(目标[0] .position).
问题是我无法找到一种方法来获取相机所在的矢量.
我看过Vector3.applyProjection和applyEuler方法,并且玩了但仍然无法获得任何好结果.
我相信在进行任何预测之前,首先必须将欧拉订单改回'XYZ'吗?我试过了,我不知道怎么做,文档很难理解.
假如相机正好向右看,那么我需要在当前旋转方向上获得距离中心一点距离的向量.
所以我最终会得到2个向量,我可以对它进行计算!
先谢谢你!