我正在研究three.js中的一个程序。所以我有一个从LAS文件加载的粒子系统。它有一个坐标系。我添加了一个功能,使用户可以点击一个粒子,它会为场景添加一个边界框。我的目标是找到哪个粒子位于这个边界框内。
在用户点击的点p处添加边界框的代码:
var cubeGeometry = new THREE.BoxGeometry( 1, 1, 1 );
var cubeMaterial = new THREE.MeshLambertMaterial( { color:
0xffff00,wireframe: true } );
var cube = new THREE.Mesh( cubeGeometry, cubeMaterial );
cube.position.x = p.x;
cube.position.y = p.y;
cube.position.z = p.z;
scene.add(cube);
但我面临一个问题。创建的框具有与粒子系统不同的坐标轴方向。它的Y轴朝向粒子系统的Z轴方向。这会导致containsPoint方法给出错误的答案。
如何解决这个问题?
答案 0 :(得分:1)
试试这个:
var e = new THREE.Euler( - Math.PI / 2, 0, 0 );
p.applyEuler( e );
这将围绕x轴旋转90度或从Z向上旋转到Y向上。