Javascript 如何计算最接近3D点的垂直度?
目标: 我想找出哪个顶点/顶点与我单击的点最近。 设置:Javascript 如何计算最接近3D点的垂直度?,javascript,3d,three.js,Javascript,3d,Three.js,目标: 我想找出哪个顶点/顶点与我单击的点最近。 设置: 透视照相机 二十面体几何体(基本网格材质->线框) 旋转几何 雷卡斯特 单击处理程序的代码已存在: mouse = new THREE.Vector2(); mouse.x = (event.clientX / renderer.domElement.clientWidth) * 2 - 1; mouse.y = - (event.clientY / renderer.domElement.clientHeight) * 2 + 1;
- 透视照相机
- 二十面体几何体(基本网格材质->线框)
- 旋转几何
- 雷卡斯特
mouse = new THREE.Vector2();
mouse.x = (event.clientX / renderer.domElement.clientWidth) * 2 - 1;
mouse.y = - (event.clientY / renderer.domElement.clientHeight) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
const intersects = raycaster.intersectObject(icosahedron);
// 3D point: intersects[0].point
// Object face: intersects[0].face
谢谢 三个步骤:
- 将相交面顶点的位置从 世界各地
- 计算到三维点的距离
- 排序升序距离
感谢您添加JSFIDLE!
vertices = [
intersects[0].face.a,
intersects[0].face.b,
intersects[0].face.c
];
vertices.forEach( function(vId,i){
vertices[i] = mesh.geometry.vertices[vId].clone();
vertices[i].l2w = mesh.localToWorld(vertices[i].clone());
vertices[i].id = vId;
vertices[i].index = i;
vertices[i].distance = vertices[i].l2w.distanceTo(intersects[0].point);
})
vertices.sort( function(a,b){
return a.distance - b.distance;
})