Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/lamont/test/implicit-surface/main.c
ViewVC logotype

Annotation of /branches/lamont/test/implicit-surface/main.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2229 - (view) (download) (as text)

1 : lamonts 2137 #include <math.h>
2 :     #include <stdlib.h>
3 :     #include <stdio.h>
4 :    
5 : lamonts 2226
6 : lamonts 2137 #define PI 3.1415926535897932384626433832795
7 :    
8 :     #define WIDTH 800
9 :     #define HEIGHT 600
10 :     #define N 100
11 : lamonts 2138 #define STEP_SIZE 1
12 : lamonts 2137
13 :     CIRCLE_World_t * wrld;
14 :    
15 :     bool isInitial = true;
16 :    
17 :     // nrrd for getting computational state
18 :     Nrrd *nData;
19 :    
20 :    
21 :     void resizeWindow(int width, int height)
22 :     {
23 : lamonts 2138 glViewport(0, 0, WIDTH, HEIGHT);
24 : lamonts 2137 }
25 :     void setUpView(void)
26 :     {
27 :     glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
28 :     glMatrixMode(GL_PROJECTION);
29 :     glLoadIdentity();
30 : lamonts 2138 glOrtho(-WIDTH/2.0, // left
31 :     WIDTH/2.0, // right
32 :     -HEIGHT/2.0, // bottom
33 :     HEIGHT/2.0, // top
34 : lamonts 2137 0, // zNear
35 :     1 // zFar
36 :     );
37 :     }
38 : lamonts 2138 void GetData (CIRCLE_World_t *wrld, Nrrd *nData)
39 :     {
40 :     // get snapshot of state
41 :     if (CIRCLE_Snapshot_outPos(wrld, nData)) {
42 :     // error
43 :     fprintf(stderr, "Error getting nrrd data\n");
44 :     exit(1);
45 :     }
46 :     }
47 : lamonts 2137 void DrawPoints(Nrrd *positions)
48 :     {
49 :     glMatrixMode(GL_MODELVIEW);
50 :    
51 :     glColor3f(0.0f, 0.0f, 1.0f);
52 :     glLoadIdentity();
53 :     glEnable (GL_POINT_SMOOTH);
54 : lamonts 2229 #ifdef __APPLE__
55 :    
56 :     #else
57 :     glEnable (GL_PROGRAM_POINT_SIZE);
58 :     #endif
59 :    
60 : lamonts 2138 glPointSize(3);
61 : lamonts 2137 glPushMatrix();
62 :     glBegin (GL_POINTS);
63 :     glColor3f (0.0, 0.0, 1.0);
64 :     float * p = (float *)(positions->data);
65 :     unsigned int nPoints = positions->axis[1].size;
66 :    
67 :     for (int i = 0; i < nPoints; i++) {
68 :     float x = p[0];
69 :     float y = p[1];
70 : lamonts 2138 p[0] *= ((WIDTH-25)/2.0);
71 :     p[1] *= ((HEIGHT-25)/2.0);
72 : lamonts 2137 glVertex2fv(p);
73 :     p[0] = x;
74 :     p[1] = y;
75 :     p += 2;
76 :     }
77 :     glEnd ();
78 :     glPopMatrix();
79 :     }
80 :     void update (int value)
81 :     {
82 :     glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
83 :     glClear(GL_COLOR_BUFFER_BIT); // Clear The Screen And The Depth Buffer
84 :     setUpView();
85 :    
86 :     // get and render initial state
87 :     if(isInitial){
88 : lamonts 2138 // printf("Getting initial data\n");
89 : lamonts 2137 GetData (wrld, nData);
90 : lamonts 2138 // printf("Done getting initial data\n");
91 : lamonts 2137 DrawPoints(nData);
92 :     isInitial = false;
93 :     glutSwapBuffers();
94 :     }else {
95 :     if(CIRCLE_NumActive(wrld) > 0){
96 :     // step the computation
97 :     CIRCLE_Run(wrld, STEP_SIZE);
98 :     // get and render the state
99 :     GetData (wrld, nData);
100 :     DrawPoints(nData);
101 :     glutSwapBuffers();
102 :     }
103 :     }
104 : lamonts 2224 glutTimerFunc(50,update, 0);
105 : lamonts 2137 }
106 : lamonts 2226
107 : lamonts 2137 int main(int argc, char** argv)
108 :     {
109 :     glutInit(&argc, argv);
110 :     glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
111 :     glutInitWindowSize(WIDTH, HEIGHT);
112 :     glutCreateWindow("Circle Implicit Diderot Program");
113 :     glutDisplayFunc(&Display);
114 :    
115 :     // initialize the Diderot program
116 : lamonts 2226 CIRCLE_World_t * wrld;
117 : lamonts 2137 wrld = CIRCLE_Init();
118 :     nData = nrrdNew();
119 : lamonts 2138 CIRCLE_Initially (wrld);
120 : lamonts 2137
121 :    
122 : lamonts 2226 // step the computation
123 :     CIRCLE_Run(wrld, STEP_SIZE);
124 :     // get and render the state
125 :     GetData (wrld, nData);
126 :    
127 :    
128 :    
129 :    
130 :    
131 : lamonts 2137 glutMainLoop();
132 :    
133 :     return 0;
134 :     }

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0