// Compile with: // g++ ddvdatamaker.cpp -o ddvdatamaker // Makes a ddv file ddvdatatest with unsigned char (byte) data. The data array // contains the slice number of each x-y slice as its data. To make // another data type, change the data type in line 15, 21, 50, 51, 54, and 59. #include #include int main(int argv, char **argc) { int i, j, num_x, num_y, num_z; float value, x_spacing, y_spacing, z_spacing; unsigned char *data; FILE *out; out = fopen("ddvdatatest","w"); fprintf(out,"ver.0001"); // Data type: i = 1; // unsigned char (bytes) // i = 2; // unsigned shorts // i = 3; // integer data values // i = 3; // float data values fwrite(&i,1,sizeof(int),out); num_x = num_y = num_z = 64; fwrite(&num_x,1,sizeof(int),out); // x size fwrite(&num_y,1,sizeof(int),out); // y size fwrite(&num_z,1,sizeof(int),out); // z size i = num_x*num_y*num_z; fwrite(&i,1,sizeof(int),out); // x*y*z size x_spacing = 1.0; value = 0.0; for ( i = 0; i < num_x; i++ ) { // x spacing array fwrite(&value,1,sizeof(float),out); value += x_spacing; } y_spacing = 1.0; value = 0.0; for ( i = 0; i < num_y; i++ ) { // y spacing array fwrite(&value,1,sizeof(float),out); value += y_spacing; } z_spacing = 1.0; value = 0.0; for ( i = 0; i < num_z; i++ ) { // z spacing array fwrite(&value,1,sizeof(float),out); value += z_spacing; } data = new unsigned char[num_x*num_y*num_z]; // create a data array memset(data,0,num_x*num_y*num_z*sizeof(unsigned char)); // initialize to value zero for ( i = 0; i < num_z; i++ ) { for ( j = 0; j < num_x*num_y; j++ ) { data[j+i*num_x*num_y] = (unsigned char)i; } } fwrite(data,num_x*num_y*num_z,sizeof(unsigned char),out); fclose(out); }