立方体的 3D 变换(旋转)无法按预期工作

问题描述 投票:0回答:1

我正在编写一个不使用矩阵的 3D 引擎,但它的旋转不起作用 目前我正在使用此代码进行轮换:

vertex.x = vertex.x * cos(theta) - vertex.y * sin(theta)
vertex.y = vertex.y * cos(theta) + vertex.x * sin(theta)

但是它不起作用并在旋转时挤压立方体: 目前我只想在一个轴(z)上旋转

立方体中旋转

不旋转的立方体

不旋转的 3D 立方体

具有“旋转”功能的 3D 立方体

我只想让立方体按照你的预期旋转。 这是正确的数学是什么?

math 3d rotation transformation
1个回答
0
投票

典型的向量/矩阵运算错误:

vertex.x = vertex.x * cos(theta) - vertex.y * sin(theta)
vertex.y = vertex.y * cos(theta) + vertex.x * sin(theta) << vertex.x is already new here!

永远不要写入您不断更改的数据:

newVertex.x = vertex.x * cos(theta) - vertex.y * sin(theta)
newVertex.y = vertex.y * cos(theta) + vertex.x * sin(theta)
© www.soinside.com 2019 - 2024. All rights reserved.