如何使用three.js查找最近的对象

如何使用three.js查找最近的对象,three.js,Three.js,我有一堆数据,我知道它们的纬度/经度位置(图上的圆圈)。现在我在three.js中有了一个摄像头,我知道它的位置、旋转以及从它的角度看哪条路是北的 我想在鼠标点击时进入这些圆圈的顶部,但我希望程序会选择离玩家最近的一个,并且它也应该在当前的视野中 我试着找出相机的观察方向和圆圈位置之间的角度,但它仍然随机移动 你知道从哪里开始吗 我不完全确定您对“在圆圈顶部点击鼠标”部分的要求,但这里有一个实用函数,用于获取相机与已知x、y、z坐标的点之间的距离 var getCameraDistanceFro

我有一堆数据,我知道它们的纬度/经度位置(图上的圆圈)。现在我在three.js中有了一个摄像头,我知道它的位置、旋转以及从它的角度看哪条路是北的

我想在鼠标点击时进入这些圆圈的顶部,但我希望程序会选择离玩家最近的一个,并且它也应该在当前的视野中

我试着找出相机的观察方向和圆圈位置之间的角度,但它仍然随机移动

你知道从哪里开始吗


我不完全确定您对“在圆圈顶部点击鼠标”部分的要求,但这里有一个实用函数,用于获取相机与已知x、y、z坐标的点之间的距离

var getCameraDistanceFrom = function(camera,x,y,z) {
    var cameraDistance = new THREE.Vector3();
    var target = new THREE.Vector3(x,y,z);
    cameraDistance.subVectors(camera.position, target);
    return cameraDistance.length();
};

这个答案似乎有一个很好的方法来检查物体是否在相机的视野中:

对于最近的圆,你可能已经找到了如何获得距离的方法?用相机的观察方向计算角度有什么不对?如果玩家必须点击视场中的一个圆圈,为什么它最终会随机移动?我想你需要更好地解释这一点,因为我不知道你想做什么。