0
我有一个数学问题,我正在努力。计算圆上的目标范围Three.js
我有一个特殊的弧度我想指向相机(camera.rotation.y)。我想告诉用户他们是否需要向左或向右平移以达到该弧度,并且具有PI/4的容差。
我已经让相机+小车旋转
function getCurrentPan(){
return dolly.rotation.y + camera.rotation.y > 0
? (dolly.rotation.y + camera.rotation.y)%Math.PI
: ((dolly.rotation.y + camera.rotation.y)%Math.PI) + Math.PI;
}
归泛号码所以它总是0和PI之间。
我曾计划制定出我可以检查的范围,以查看用户是否需要向左或向右平移才能达到该弧度。尝试下面的代码:
point.leftRange = {};
point.leftRange.min = point.pan - range > 0 ? point.pan - range : Math.PI - point.pan - range;
point.leftRange.max = point.leftRange.min - Math.PI/2 - range > 0 ? (point.pan - range)%Math.PI : (Math.PI - (point.leftRange.min - Math.PI/2 - range))% Math.PI;
console.log(point.leftRange);
point.rightRange = {};
point.rightRange.min = (point.pan + range) % Math.PI;
point.rightRange.max = (point.rightRange.min + (Math.PI/2 - range)) % Math.PI;
console.log(point.rightRange);
这是给我像
- point.pan 1.464308692701496
- left.min 1.071609611002772
- left.max 0.8918857974908487
- right.min 1.8570077744002202
- right.max 3.0351050194963927
我已经试过另一种方法是
var opp = (point.pan - Math.PI/2)%Math.PI;
opp = opp > 0 ? opp : Math.PI - opp;
if(getCurrentPan() > point.pan && getCurrentPan() < opp)
console.log('greater');
else if(getCurrentPan() < point.pan && getCurrentPan() > opp)
console.log('less');
这要是锅就像是0.5左右的范围是3等(PI的另一侧)再次将不考虑。
对不起,我没有解释得很好,但如果有人能指出我正确的方向,我会很感激!
感谢。这很有用。我的问题不在于它是一个对象......但是这可能对此有好处 - 更多的是存储的视角。我可能能够添加一个隐藏的对象在这个角度tho使用这个,如果我不能这样做的角度.. – user5839
其实我打算这样做。我会标记答案正确.. – user5839
什么是目标的类型。位置'和'camera.position'就是'vector3'的类型,我收到错误了。 –