Changeset 2844 for trunk/packages/vizservers/nanovis/dxReaderCommon.cpp
- Timestamp:
- Mar 12, 2012, 10:31:30 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/dxReaderCommon.cpp
r2798 r2844 7 7 8 8 float * 9 merge(float * scalar, float*gradient, int size)9 merge(float *scalar, float *gradient, int size) 10 10 { 11 float * data = (float*)malloc(sizeof(float) * 4 * size);11 float *data = (float *)malloc(sizeof(float) * 4 * size); 12 12 13 Vector3 * g = (Vector3*)gradient;13 Vector3 *g = (Vector3 *)gradient; 14 14 15 15 int ngen = 0, sindex = 0; 16 for (sindex = 0; sindex < size; ++sindex) {17 data[ngen++] = scalar[sindex];18 data[ngen++] = g[sindex].x;19 data[ngen++] = g[sindex].y;20 data[ngen++] = g[sindex].z;16 for (sindex = 0; sindex < size; ++sindex) { 17 data[ngen++] = scalar[sindex]; 18 data[ngen++] = g[sindex].x; 19 data[ngen++] = g[sindex].y; 20 data[ngen++] = g[sindex].z; 21 21 } 22 22 return data; … … 24 24 25 25 void 26 normalizeScalar(float *fdata, int count, float min, float max)26 normalizeScalar(float *fdata, int count, float min, float max) 27 27 { 28 28 float v = max - min; … … 30 30 for (int i = 0; i < count; ++i) { 31 31 fdata[i] = fdata[i] / v; 32 }32 } 33 33 } 34 34 } 35 35 36 float *37 computeGradient(float *fdata, int width, int height, int depth,38 float min, float max)36 float * 37 computeGradient(float *fdata, int width, int height, int depth, 38 float min, float max) 39 39 { 40 float *gradients = (float *)malloc(width * height * depth * 3 *41 sizeof(float));42 float *tempGradients = (float *)malloc(width * height * depth * 3 *43 sizeof(float));40 float *gradients = (float *)malloc(width * height * depth * 3 * 41 sizeof(float)); 42 float *tempGradients = (float *)malloc(width * height * depth * 3 * 43 sizeof(float)); 44 44 int sizes[3] = { width, height, depth }; 45 45 computeGradients(tempGradients, fdata, sizes, DATRAW_FLOAT); … … 47 47 quantizeGradients(tempGradients, gradients, sizes, DATRAW_FLOAT); 48 48 normalizeScalar(fdata, width * height * depth, min, max); 49 float *data = merge(fdata, gradients, width * height * depth);49 float *data = merge(fdata, gradients, width * height * depth); 50 50 return data; 51 51 } 52 52 53 53 void 54 computeSimpleGradient(float *data, int nx, int ny, int nz)54 computeSimpleGradient(float *data, int nx, int ny, int nz) 55 55 { 56 56 // Compute the gradient of this data. BE CAREFUL: center 57 57 // calculation on each node to avoid skew in either direction. 58 58 int ngen = 0; 59 for (int iz =0; iz < nz; iz++) {60 for (int iy =0; iy < ny; iy++) {61 for (int ix =0; ix < nx; ix++) {59 for (int iz = 0; iz < nz; iz++) { 60 for (int iy = 0; iy < ny; iy++) { 61 for (int ix = 0; ix < nx; ix++) { 62 62 // gradient in x-direction 63 64 // INSOO -teST65 63 double valm1 = (ix == 0) ? 0.0 : data[ngen - 4]; 66 64 double valp1 = (ix == nx-1) ? 0.0 : data[ngen + 4]; 67 if (valm1 < 0 || valp1 <0) {65 if (valm1 < 0.0 || valp1 < 0.0) { 68 66 data[ngen+1] = 0.0; 69 67 } else { 70 data[ngen+1] = valp1-valm1; // assume dx=1 // ISO71 //data[ngen+1] = ((valp1-valm1) + 1 ) * 0.5; // assume dx=168 data[ngen+1] = valp1-valm1; // assume dx=1 69 //data[ngen+1] = ((valp1-valm1) + 1.0) * 0.5; // assume dx=1 (ISO) 72 70 } 73 71 74 72 // gradient in y-direction 75 valm1 = (iy == 0) ? 0.0 : data[ngen -4*nx];76 valp1 = (iy == ny-1) ? 0.0 : data[ngen +4*nx];77 if (valm1 < 0 || valp1 <0) {73 valm1 = (iy == 0) ? 0.0 : data[ngen - 4*nx]; 74 valp1 = (iy == ny-1) ? 0.0 : data[ngen + 4*nx]; 75 if (valm1 < 0.0 || valp1 < 0.0) { 78 76 data[ngen+2] = 0.0; 79 77 } else { 80 data[ngen+2] = valp1-valm1; // assume d x=181 //data[ngen+2] = ((valp1-valm1) + 1) * 0.5; // assume dy=1 // ISO78 data[ngen+2] = valp1-valm1; // assume dy=1 79 //data[ngen+2] = ((valp1-valm1) + .01) * 0.5; // assume dy=1 (ISO) 82 80 } 83 81 84 82 // gradient in z-direction 85 valm1 = (iz == 0) ? 0.0 : data[ngen -4*nx*ny];86 valp1 = (iz == nz-1) ? 0.0 : data[ngen +4*nx*ny];87 if (valm1 < 0 || valp1 <0) {83 valm1 = (iz == 0) ? 0.0 : data[ngen - 4*nx*ny]; 84 valp1 = (iz == nz-1) ? 0.0 : data[ngen + 4*nx*ny]; 85 if (valm1 < 0.0 || valp1 < 0.0) { 88 86 data[ngen+3] = 0.0; 89 87 } else { 90 data[ngen+3] = valp1-valm1; // assume d x=191 //data[ngen+3] = ((valp1-valm1) + 1.0) * 0.5; // assume dz=1 //ISO88 data[ngen+3] = valp1-valm1; // assume dz=1 89 //data[ngen+3] = ((valp1-valm1) + 1.0) * 0.5; // assume dz=1 (ISO) 92 90 } 93 91
Note: See TracChangeset
for help on using the changeset viewer.