我一直在寻找这个很长一段时间没有任何结果,一直试图自己弄清楚这个数学大约一个星期+。
我的目标是设置我的光标位置,使其形成一个旋转立方体,就像 OpenGL 旋转立方体边框框一样。
由于 OpenGL 内置了旋转功能,因此我无法适应它。我只是想知道是否有人对我将如何处理有任何想法。如果您想知道这是什么意思,在每个创建的帧(立方体旋转点)上,它都有一个功能可以擦除在 MsPaint 中绘制的任何内容,然后下一个位置开始绘制,基本上是创建一个正在绘制的旋转立方体。
如果您尝试在没有任何专门库帮助的情况下在 C 中旋转立方体,您应该使用矩阵运算来转换坐标。
对于 2D 旋转,例如(f - 旋转角度,+- 是旋转方向):
|cos f +-sin f| |x| |x'|
| | | | = | |
|+-sin f cos f| |y| |y'|
对于 3D 旋转,您应该使用 3x3 marix。另外你应该旋转轴,根据它你应该选择矩阵M:
Mx(绕 x 轴旋转):
|1 0 0 ||x| |x'|
|0 cos f -sin f||y| = |y'|
|0 sin f cos f||z| |z'|
我的(绕y轴旋转):
|cos f 0 sin f ||x| |x'|
| 0 1 0 ||y| = |y'|
|-sin f 0 cos f ||z| |z'|
Mz(绕z轴旋转):
| cos f -sin f 0 ||x| |x'|
| sin f cos f 0 ||y| = |y'|
| 0 0 1 ||z| |z'|