-
- double dMin = v[0][0];
- double dMax = dMin;
- unsigned int ix;
- for (ix = 0; ix < nx; ix++)
- for (unsigned int iy = 0; iy < ny; iy++)
- if (v[ix][iy] < dMin)
- dMin = v[ix][iy];
- else if (v[ix][iy] > dMax)
- dMax = v[ix][iy];
-
- double dIntensityScale = dMax - dMin;
- double actOffset = dMin;
- double actScale = 0.3 * sqrt(nx*nx+ny*ny) / (dMax - dMin);
-
- // glNewList(opnListNum++,GL_COMPILE);
- if (! m_bColor)
- glColor3f (1.0, 1.0, 1.0);
-
- glDisable (GL_CULL_FACE);
- for (ix = 0; ix < nx-1; ix++) {
- for (unsigned int iy = 0; iy < ny-1; iy++) {
-
- float p1[3], p2[3], p3[3], p4[3];
- float n1[3], n2[3], n3[3], n4[3];
- if (m_bSurface)
- glBegin(GL_QUADS);
- else
- glBegin(GL_LINE_LOOP);
-
- p1[0] = ix; p1[1] = actScale * (v[ix][iy] + actOffset); p1[2] = iy;
- p2[0] = ix+1; p2[1] = actScale * (v[ix+1][iy] + actOffset); p2[2] = iy;
- p3[0] = ix+1; p3[1] = actScale * (v[ix+1][iy+1] + actOffset); p3[2] = iy+1;
- p4[0] = ix; p4[1] = actScale * (v[ix][iy+1] + actOffset); p4[2] = iy+1;
-
- // n1[0] = -(p2[1] - p1[1])*(p3[2] - p1[2]) + (p2[2] - p1[2])*(p3[1] - p2[1]);
- // n1[1] = -(p2[2] - p1[2])*(p3[0] - p2[0]) + (p2[0] - p1[0])*(p3[2] - p2[2]);
- // n1[2] = -(p2[0] - p1[0])*(p3[1] - p2[1]) + (p2[1] - p1[1])*(p3[0] - p2[0]);
- CalculateVectorNormal (p1, p2, p4, &n1[0], &n1[1], &n1[2]);
- //CalculateVectorNormal (p2, p1, p3, &n2[0], &n2[1], &n2[2])
- //CalculateVectorNormal (p3, p2, p4, &n1[0], &n1[1], &n1[2])
- double dIntensity1, dIntensity2, dIntensity3, dIntensity4;
- if (m_bColor) {
- dIntensity1 = (v[ix][iy] - dMin) / dIntensityScale;
- dIntensity2 = (v[ix+1][iy] - dMin) / dIntensityScale;
- dIntensity3 = (v[ix+1][iy+1] - dMin) / dIntensityScale;
- dIntensity4 = (v[ix][iy+1] - dMin) / dIntensityScale;
- }
- float vecColor[3];
- if (m_bColor) {
- intensityToColor (dIntensity1, vecColor);
- glColor3fv (vecColor);
- }
- glVertex3fv (p1); glNormal3fv (n1);
- if (m_bColor) {
- intensityToColor (dIntensity2, vecColor);
- glColor3fv (vecColor);
- }
- glVertex3fv (p2); glNormal3fv (n1);
- if (m_bColor) {
- intensityToColor (dIntensity3, vecColor);
- glColor3fv (vecColor);
- }
- glVertex3fv (p3); glNormal3fv (n1);
- if (m_bColor) {
- intensityToColor (dIntensity4, vecColor);
- glColor3fv (vecColor);
- }
- glVertex3fv (p4); glNormal3fv (n1);
- glEnd();
- }
-
- }
- glEndList();
-
-#ifdef GL_EXT_vertex_array
+ glVertex3dv (p1);
+ glNormal3dv (n1);
+ if (m_bColor) {
+ intensityToColor (dIntensity2, vecColor);
+ glColor3fv (vecColor);
+ }
+ glVertex3dv (p2);
+ glNormal3dv (n1);
+ double lastP[3];
+ lastP[0] = ix; lastP[1] = actScale * (v[ix][0] + actOffset); lastP[2] = 0;
+ for (unsigned int iy = 1; iy < ny - 1; iy++, dYPos++) {
+ p1[0] = dXPos; p1[1] = actScale * (v[ix][iy] + actOffset); p1[2] = dYPos;
+ p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][iy] + actOffset); p2[2] = dYPos;
+ CalculateVectorNormal (p1, p2, lastP, &n1[0], &n1[1], &n1[2]);
+ lastP[0] = p1[0]; lastP[1] = p1[1]; lastP[2] = p1[2];
+ if (m_bColor) {
+ dIntensity1 = (v[ix][iy] - dMin) / dIntensityScale;
+ dIntensity2 = (v[ix+1][iy] - dMin) / dIntensityScale;
+ }
+ if (m_bColor) {
+ intensityToColor (dIntensity1, vecColor);
+ glColor3fv (vecColor);
+ }
+ glVertex3dv (p1); glNormal3dv (n1);
+ if (m_bColor) {
+ intensityToColor (dIntensity2, vecColor);
+ glColor3fv (vecColor);
+ }
+ glVertex3dv (p2); glNormal3dv (n1);
+ }
+ glEnd(); // QUAD_STRIP