Javascript 使用.Euler';s";setFromVector3“;
所以输入是三个欧拉角x,y,z,弧度 我想把它转换成以中心为原点的向量位置X,Y,Z 如果有可能得到向量,我想知道如何得到。此外,还赞赏交替数学(sin/cos)解 因此,在这个片段中,AxeHelper表示角度,立方体应该位于基于euler的位置。使用Dat gui实时编辑旋转Javascript 使用.Euler';s";setFromVector3“;,javascript,vector,three.js,euler-angles,Javascript,Vector,Three.js,Euler Angles,所以输入是三个欧拉角x,y,z,弧度 我想把它转换成以中心为原点的向量位置X,Y,Z 如果有可能得到向量,我想知道如何得到。此外,还赞赏交替数学(sin/cos)解 因此,在这个片段中,AxeHelper表示角度,立方体应该位于基于euler的位置。使用Dat gui实时编辑旋转 //add Axis to represent Euler const axesHelper = new THREE.AxesHelper( 5 ); scene.add( axesHelper ); //add c
//add Axis to represent Euler
const axesHelper = new THREE.AxesHelper( 5 );
scene.add( axesHelper );
//add cube to represent Vector
const geometry = new THREE.BoxGeometry( 0.1, 0.1, 0.1 );
const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
const cube = new THREE.Mesh( geometry, material );
scene.add( cube );
render()
const gui = new GUI();
const angles={
degX:0,
degY:0,
degZ:0,
}
gui.add( angles, 'degX',0,360,1 ).onChange(function(){
axesHelper.rotation.x=THREE.MathUtils.degToRad(angles.degX)
render()
updateEULtoAngle()
});
gui.add( angles, 'degY',0,360,1 ).onChange(function(){
axesHelper.rotation.y=THREE.MathUtils.degToRad(angles.degY)
render()
updateEULtoAngle()
});
gui.add( angles, 'degZ',0,360,1 ).onChange(function(){
axesHelper.rotation.z=THREE.MathUtils.degToRad(angles.degZ)
render()
updateEULtoAngle()
});
console.log(THREE.MathUtils.radToDeg( axesHelper.rotation.x))
console.log(THREE.MathUtils.radToDeg( axesHelper.rotation.y))
console.log(THREE.MathUtils.radToDeg( axesHelper.rotation.z))
function updateEULtoAngle(){
let eul= new THREE.Euler(
THREE.MathUtils.degToRad(angles.degX),
THREE.MathUtils.degToRad(angles.degY),
THREE.MathUtils.degToRad(angles.degZ)
)
let vec= new THREE.Vector3()
eul.toVector3(vec)
console.log(eul,vec)
cube.position.copy(vec)
}
假视觉表现
相关:但在轴匹配方面存在问题。toVector3()不符合您的要求。它只是将x、y和z角度复制到相应的矢量分量中
我认为您应该看看哪个是使用球坐标的实现。可以用两个角度(φ和θ)和一个半径表示三维空间中的点。然后可以使用这些数据通过或设置
Vector3
的实例。`vec.setFromSphericalCoords(1,radX,radZ,)`非常接近..它现在正确地跟踪Y轴,但旋转Z绝对没有影响。