【问题标题】:C++ Rotating Cube in Coordinates (non-draw)坐标中的 C++ 旋转立方体(非绘制)
【发布时间】:2016-09-11 07:37:03
【问题描述】:

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

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

由于 OpenGL 内置了旋转功能,因此我无法适应它。 我只是想知道是否有人对我将如何处理有任何想法。 如果您想知道这是什么意思,在每个创建的帧(立方体旋转点)上,它都有一个功能可以擦除在 MsPaint 中绘制的任何内容,然后下一个位置开始绘制,基本上是创建一个正在绘制的旋转立方体。

【问题讨论】:

标签: c++ cube spinning


【解决方案1】:

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

  1. 你应该得到旋转矩阵(我们称之为M
  2. 您应该将 M 乘以您的坐标向量 - 结果是新的 坐标。

对于二维旋转,例如(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'|

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2017-01-19
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多