【发布时间】:2017-02-21 06:10:31
【问题描述】:
我正在尝试围绕球体旋转立方体,当我按下空格键时,立方体开始围绕球体旋转就好了,但它比我想要的要快得多,我写了一个函数来计算旋转使用“角度”作为参数。完整的旋转需要角度从 0 到 359(或 1 到 360),但不知何故,当角度增加 7 度时,立方体会完全围绕球体旋转。
代码:(不包括立方体和球体网格的初始化,只是函数)
var rotationAngle = 0;
function rotate(angle)
{
if(angle == 0)
{
keu.position.x = whiteBall.position.x + 1;
keu.position.z = whiteBall.position.z;
} else if(angle > 0 && angle < 90)
{
keu.position.x = whiteBall.position.x + Math.cos(angle);
keu.position.z = whiteBall.position.z - Math.sin(angle);
} else if(angle == 90)
{
keu.position.x = whiteBall.position.x;
keu.position.z = whiteBall.position.z - 1;
} else if(angle > 90 && angle < 180)
{
angle -= 90;
keu.position.x = whiteBall.position.x - Math.sin(angle);
keu.position.z = whiteBall.position.z - Math.cos(angle);
} else if(angle == 180)
{
keu.position.x = whiteBall.position.x - 1;
keu.position.z = whiteBall.position.z;
} else if(angle > 180 && angle < 270)
{
angle -= 180;
keu.position.x = whiteBall.position.x - Math.cos(angle);
keu.position.z = whiteBall.position.z + Math.sin(angle);
} else if(angle == 270)
{
keu.position.x = whiteBall.position.x;
keu.position.z = whiteBall.position.z + 1;
}else if(angle > 270 && angle < 360)
{
angle -= 270;
keu.position.x = whiteBall.position.x + Math.sin(angle);
keu.position.z = whiteBall.position.z + Math.cos(angle);
}
console.log(angle);
}
在上面的代码中“whiteball 是球体,而“keu”是立方体。
在我的渲染函数中,我必须使用以下代码来增加角度并应用旋转:
if(isKeyPressed)
{
if(rotationAngle < 360)
{
rotationAngle += 1;
}
if(rotationAngle == 360)
rotationAngle = 0;
}
rotate(rotationAngle);
我不知道为什么增加 7 度会导致立方体围绕球体进行完整旋转,任何代码 sn-ps / 建议将不胜感激。
【问题讨论】:
标签: javascript 3d three.js rotation