如何解决你如何在不使用 Ogre3D 中的内置层次结构的情况下围绕另一个也在移动的对象旋转和对象?
在这个程序中,我试图让月亮围绕地球而不是太阳旋转。
这是我的行星公转代码。
float degree = 0.0;
if (name == "Mercury") { degree = 25.0f; }
if (name == "Venus") { degree = 9.777f; }
if (name == "Earth") { degree = 6.0f; }
if (name == "Moon") { degree = 6.0f; }
if (name == "Mars") { degree = 3.188f; }
if (name == "Moon")
{
// Code for the Moom's special revolution
// modify this code
//Degree revolutionDegree = Degree(degree * evt.timeSinceLastFrame);
//float newX = (cubeNode->getPosition().x * Math::Cos(Radian(revolutionDegree))) + (cubeNode->getPosition().z * Math::Sin(Radian(revolutionDegree)));
//float newZ = (cubeNode->getPosition().x * -(Math::Sin(Radian(revolutionDegree)))) + (cubeNode->getPosition().z * Math::Cos(Radian(revolutionDegree)));
//cubeNode->setPosition(newX,cubeNode->getPosition().y,newZ);
}
else
{
Degree revolutionDegree = Degree(degree * evt.timeSinceLastFrame);
float newX = (cubeNode->getPosition().x * Math::Cos(Radian(revolutionDegree))) + (cubeNode->getPosition().z * Math::Sin(Radian(revolutionDegree)));
float newZ = (cubeNode->getPosition().x * -(Math::Sin(Radian(revolutionDegree)))) + (cubeNode->getPosition().z * Math::Cos(Radian(revolutionDegree)));
cubeNode->setPosition(newX,newZ);
}
我需要使用这个方程来为月球设置不同的旋转,因为我不允许使用内置的层次结构。
newX = oldX * cos(a) + oldZ * sin(a)
newZ = oldX * -sin(a) + oldZ * cos(a)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。