zoukankan      html  css  js  c++  java
  • OpenGL中的渐变颜色绘图(应力可视化)

     1 #include <GL/glut.h>
     2 #include <iostream>
     3 #include <cmath>
     4 using namespace std;
     5 const GLsizei width=640;
     6 const GLsizei height=480;//设置窗口的宽和高
     7 
     8 void myInit()
     9 {
    10     glClearColor(0,0,0,0);
    11 }
    12 
    13 
    14 void show()
    15 {
    16     GLsizei dw;
    17     int n,i;
    18     dw=2;
    19     n=(width-1)/dw;
    20     cout<<"n="<<n<<endl;
    21     glClear(GL_COLOR_BUFFER_BIT);
    22     GLsizei r,g,b;
    23     for (i=0;i<n;i++)
    24     {
    25         //绘制应力云图的关键就是下面的这五种不同的颜色对应关系
    26         //根据自己需要可以设置不同的等级,四种也是可以的
    27         if (i>=0&&i<=n/5)
    28         {
    29             r=255;
    30             g=i*255/(n/5);
    31             b=0;
    32         }
    33         else if (i>n/5&&i<=2*n/5)
    34         {
    35             r=255-(i-n/5)*255/(n/5);
    36             g=255;
    37             b=0;
    38         }
    39         else if(i>2*n/5&&i<=3*n/5)
    40         {
    41             r=0;
    42             g=255;
    43             b=(i-2*n/5)*255/(n/5);
    44         }
    45         else if(i>3*n/5&&i<=4*n/5)
    46         {
    47             r=0;
    48             g=255-(i-3*n/5)*255/(n/5);
    49             b=255;
    50         }
    51         else
    52         {
    53             r=(i-4*n/5)*255/(n/5);
    54             g=0;
    55             b=255;
    56         }
    57         glColor3f(r/255.0f,g/255.0f,b/255.0f);
    58         glRectf(1.0*i*dw,0.0,1.0*(i+1)*dw,height);
    59     }
    60     glFlush();
    61 }
    62 void reshape(int w,int h)
    63 {
    64     glViewport(0,0,(GLsizei)w,(GLsizei)h);
    65     glMatrixMode(GL_PROJECTION);
    66     glLoadIdentity();
    67     glOrtho(0,w,0,h,-100,100);//设置视野的范围,(左,右,上,下,前,后)
    68     glMatrixMode(GL_MODELVIEW);
    69     glLoadIdentity();
    70 }
    71 
    72 int main(int argc,char *argv[])
    73 {
    74     glutInit(&argc, argv);
    75     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    76     glutInitWindowPosition(100,100);
    77     glutInitWindowSize(width,height);
    78     glutCreateWindow("应力云图绘制");
    79     myInit();
    80     glutDisplayFunc(show);
    81     glutReshapeFunc(reshape);
    82     glutMainLoop();
    83     return 0;
    84 }

      

  • 相关阅读:
    教你三招打入App Store推荐目录!
    APP下载量低 如何显著提高APP下载量?
    导致APP排名下跌的主要因素
    如何提高APP关键词覆盖率?先熟悉套路!
    如何让你的ASO优化效果提升10倍?
    有效的移动应用推广策略
    APP运营推广不得不看的6种数据指标
    如何为你的APP选出“最好”的关键词
    手机应用开发宝典:如何养成一款畅销APP
    Linux下设置定期执行脚本
  • 原文地址:https://www.cnblogs.com/icmzn/p/7567002.html
Copyright © 2011-2022 走看看