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 }

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM