我正在尝试使一个立方体围绕所有轴正确旋转。我可以移动立方体,视图是透视,但是当我尝试旋转它时,旋转仅适用于Z轴。
即使我考虑到X轴和Y轴旋转也没有效果。我的旋转方法:
void Matrix4::rotate(float degrees, Vector3 axis)
{
float c = cos(Common::degreesToRadians(degrees));
float s = sin(Common::degreesToRadians(degrees));
values[0] = (axis.x * axis.x) * (1.0f - c) + c;
values[1] = (axis.y * axis.x) * (1.0f - c) + (axis.z * s);
values[2] = (axis.z * axis.x) * (1.0f - c) - (axis.y * s);
values[4] = (axis.x * axis.y) * (1.0f - c) - (axis.z * s);
values[5] = (axis.y * axis.y) * (1.0f - c) + c;
values[6] = (axis.z * axis.y) * (1.0f - c) + (axis.x * s);
values[8] = (axis.x * axis.z) * (1.0f - c) + (axis.y * s);
values[9] = (axis.y * axis.z) * (1.0f - c) - (axis.x * s);
values[10] = (axis.z * axis.z) * (1.0f - c) + c;
}
我的createTransformationMatrix函数:
Matrix4 Matrix4::createTransformationMatrix(Vector3 position, Vector3 rotation, Vector3 scale)
{
Matrix4 result;
result.translate(position);
result.rotate(rotation.x, Vector3(1, 0, 0));
result.rotate(rotation.y, Vector3(0, 1, 0));
result.rotate(rotation.z, Vector3(0, 0, 1));
result.scale(scale);
return result;
}
感谢您的帮助,谢谢。
答案 0 :(得分:0)
没关系,问题在于所有3个功能:缩放,旋转,翻译错误并且乱糟糟。我基于lwjgl Matrix4f类修复了它们,现在一切正常。