C ++坐标中的旋转立方体(非绘制)

时间:2016-09-11 07:37:03

标签: c++ cube spinning

我一直在寻找这个很长一段时间而没有任何结果,一直在试图弄清楚这个数学约一个星期+。

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

由于OpenGL具有内置的旋转功能,因此它并不是我能够适应的东西。 我只是想知道是否有人有任何想法我会怎么做。 如果你想知道这是什么意思,在每个创建的框架(立方体旋转点)上它有一个功能来擦除在MsPaint中绘制的任何东西,然后下一个位置开始绘制,基本上是为了创建一个正在绘制的旋转立方体。

1 个答案:

答案 0 :(得分:0)

如果您尝试在没有任何专用库的帮助下在C中旋转立方体,则应使用Matrix运算来变换坐标。

  1. 你得到了roatation矩阵(我们称之为 M
  2. 您应该将 M 乘以坐标向量 - 结果是新的 坐标。
  3. 用于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'|