• OpenGL中的旋转是可以叠加的?


    OpenGL中的旋转是可以叠加的?

    1. opengl中的旋转

      如:glrogtate(45.0f, 0, 0, 1),是将当前坐标系顺时针旋转45度,然后绘制,

      程序如下:

     1   int randium = 80;
     2     float lineColor[] = {1.0f, 1.0f, 0.0f};
     3     midPoint_1P8Circle(randium, lineColor);
     4     
     5     //glPushMatrix();
     6     glRotatef(45.0f, 0, 0, 1);//旋转45度
     7     midPoint_1P8Circle(randium, lineColor);
     8     //glPopMatrix();
     9     
    10     //glPushMatrix();
    11     glRotatef(90.0f, 0, 0, 1);//旋转45度
    12     midPoint_1P8Circle(randium, lineColor);
    13     //glPopMatrix();
    14     
    15     //glPushMatrix();
    16     glRotatef(135.0f, 0, 0, 1);//旋转45度
    17     midPoint_1P8Circle(randium, lineColor);
    18     //glPopMatrix();

      程序分析:

      (1)因为没有添加glPushMatrix(), 和 glPopMatrix(),所以每一次旋转都会产生相应的旋转矩阵。从而导致最终的旋转结果进行叠加处理。

      (2)glPushMatrix(), 和 glPopMatrix(),所的作用是,保存当前坐标系,并重新建立一个初始模型视图MoldView的变换矩阵,后面的旋转不影响前面的的绘制。

      (3)每一次的旋转,在同一个坐标系下面,即在同一层此上的glPushMatrix(), 和 glPopMatrix(),中间的所有模型处理,旋转只影响该函数后面的模型绘制。

      通过以上分析,即可以解释产下属现象的原因,从本质上来讲,产生这种现象也是必然的。如果相应的添加glPushMatrix(), 和 glPopMatrix(),取消前面的注释,通过1/8最小化的分圆部分,绘制出如下的旋转圆,如右图所示。

        

  • 相关阅读:
    Codeforces 514C Watto and Mechanism(字典树)
    计蒜客 直线的交点(计算几何 + 逆序对)
    Codeforces 837D Round Subset(背包)
    计蒜客 商汤科技的行人检测(随机化+计算几何)
    HDU 5893 List wants to travel(树链剖分+线段树)
    操作系统的中断处理
    Linux 安装 webmin
    Fedora 安装 phpMyAdmin(可能只有自己看得懂)
    httpd编译安装php
    IA-32e架构下的内核初始化内存管理
  • 原文地址:https://www.cnblogs.com/icmzn/p/5046394.html
Copyright © 2020-2023  润新知