(1)屏幕坐标转空间坐标
function transToThreeCoord(x,y){
let mouse = new THREE.Vector3();
mouse.x = (x/window.innerWidth)*2 -1;
mouse.y = -(y/window.innerHeight)*2 + 1;
return mouse;
}
(2)空间坐标转二维坐标
/**
* 将three.js三维坐标转换成屏幕上的二维坐标
* @param THREE.Vector3 vector three.js三维坐标
* @return {x:int,y:int} 屏幕坐标
*/
function transToScreenCoord(vector) {
var screenCoord = {};
vector.project(camera);
screenCoord.x = (0.5 + vector.x / 2) * window.innerWidth;
screenCoord.y = (0.5 - vector.y / 2) * window.innerHeight;
return screenCoord;
}
(3)圆周运动
// 声明一个变量angle表示角度位置
let angle = 0;
function render() {
renderer.render(scene, camera);
// 每次执行渲染函数redner时候,角度累加0.005
angle += 0.005;
// 圆周运动网格模型x坐标计算 绕转半径400
var x = 400 * Math.sin(angle)
// 圆周运动网格模型y坐标计算 绕转半径400
var z = 400 * Math.cos(angle)
// 每次执行render函数,更新需要做圆周运动网格模型Mesh的位置属性
Mesh.position.set(x, 0, z);
requestAnimationFrame(render);
}
render();