【问题标题】:How to scale and rotate squares to fit inside each other in OpenGl如何在OpenGL中缩放和旋转正方形以适合彼此
【发布时间】:2021-11-19 05:28:08
【问题描述】:

我试图缩放和旋转 10 个正方形以在 OpenGL 中以 45 度的旋转角递归地相互适应。我的输出应该是这样的。

我当前的代码是这样的

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);

    glBindVertexArray(vao);

    

    scale = 1.0f;
    angle = 45.0f;
    for (int  i = 0; i < 10; i++)
    {
        transformObject(scale -=0.156f, Z_AXIS, angle -= 45.0f, glm::vec3(0.0f, 0.0f, 0.0f));
        glDrawArrays(GL_LINE_LOOP, 0, 4);
        
        
        
        
    }

【问题讨论】:

  • 问题解决了吗?

标签: c++ opengl rotation translation scaling


【解决方案1】:

随着循环的每次迭代,正方形的大小会变小 1/sqrt(2)。外部矩形不变形。外部矩形不变形。在循环结束时更改比例和角度:

scale = 1.0f;
angle = 0.0f;
for (int  i = 0; i < 10; i++)
{
    transformObject(scale, Z_AXIS, angle, glm::vec3(0.0f));
    glDrawArrays(GL_LINE_LOOP, 0, 4);
        
    scale = 1.0f/sqrt(2.0f);
    angle -= 45.0f;
}

【讨论】:

  • @BigFungus05 那我该怎么办?这显然不是答案中代码的问题。 transformObject 函数中如何使用/转换角度?
猜你喜欢
  • 2021-01-09
  • 2019-03-07
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多