【问题标题】:Rotating a polygon about origin围绕原点旋转多边形
【发布时间】:2019-08-30 04:05:37
【问题描述】:

我正在尝试围绕 opengl 中的原点旋转一个对象(一组顶点)。

对象是摩天轮中的马车,在旋转过程中不得保持直立。到目前为止,我所得到的只是以下转换,它可以旋转马车但不会保持直立。这使用以 72 度角围绕原点的基本旋转变换。模型矩阵看起来像这样:

g_modelMatrix[i] = glm::mat4(1.0f) * glm::rotate(glm::radians(-72.0f), glm::vec3(0.0f, 0.0f, 1.0f)); 

其中 glm::mat4(1.0f) 是一个单位矩阵

最终的结果是使马车变形,但不能使其直立。 什么样的转换适合这类问题?

【问题讨论】:

  • 在翻译前先将笔架反向旋转?
  • 您的意思是逆时针旋转 (72deg) 然后平移 (x,y) 使其回到原始位置,然后再次顺时针旋转 (72deg )?
  • 是的,我是这个意思。
  • 但是对于每次转换,我如何计算出 x 和 y 呢?
  • 如果轮子的中心不在原点,则先将轮子平移到原点,然后旋转,再平移回来。这仅适用于车轮;其余对象需要不同的视图矩阵(另一个渲染调用)。

标签: c++ opengl glm-math


【解决方案1】:

这是我用来解决问题的方法。

rotate(i * 72°) * translate(r, 0, 0) * rotate(-i * 72°)

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2014-04-21
    相关资源
    最近更新 更多