c++旋转立方体坐标(非绘制)

C++ Rotating Cube in Coordinates (non-draw)

本文关键字:绘制 坐标 旋转 立方体 c++      更新时间:2023-10-16

我一直在寻找这个很长一段时间没有任何结果,一直试图找出这个自己的数学大约一个星期+。

我的目标是设置光标位置,使其形成一个旋转立方体,就像OpenGL旋转立方体边界框一样。

因为OpenGL有一个旋转函数,这不是我能适应的。我只是想知道有没有人知道我该怎么做。如果你想知道这是什么意思,在每个创建的帧(立方体旋转点)上,它有一个函数来擦除在MsPaint中绘制的任何东西,然后下一个位置开始绘制,基本上是创建一个正在绘制的旋转立方体。

如果您尝试在没有任何专门库的帮助下在C中旋转立方体,您应该使用矩阵操作来转换坐标。

    你会得到旋转矩阵(我们叫它M)你应该把M乘到你的坐标向量上——结果是新的坐标。

表示二维旋转,示例(f -旋转角度,+-为旋转方向):

|cos f +-sin f| |x|   |x'|
|             | | | = |  |
|+-sin f cos f| |y|   |y'|

对于3D旋转,您应该使用3x3矩阵。此外,你应该旋转轴,根据它你应该选择矩阵M:

Mx(绕x轴旋转):

|1      0       0 ||x|   |x'|
|0   cos f  -sin f||y| = |y'|                       
|0   sin f   cos f||z|   |z'|

My(绕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'|