Changeset 2288 for research/2008-displacement/main.c
- Timestamp:
- Apr 16, 2008, 12:11:38 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
research/2008-displacement/main.c
r2287 r2288 25 25 26 26 #ifdef BYTECODE 27 # define MAXIMAGES 12827 # define MAXIMAGES 6 28 28 static int slots[MAXIMAGES]; 29 29 static double slotbuf[MAXIMAGES * MAXWIDTH * MAXHEIGHT]; … … 383 383 { 384 384 double *floats; 385 int x, y;385 int w, h, x, y; 386 386 387 387 #ifdef BYTECODE … … 390 390 if(sys_read(0, &c, 1) != 1) 391 391 sys_exit(-5); 392 WIDTH= ((int)(unsigned char)c) << 8;392 w = ((int)(unsigned char)c) << 8; 393 393 if(sys_read(0, &c, 1) != 1) 394 394 sys_exit(-5); 395 WIDTH|= (int)(unsigned char)c;395 w |= (int)(unsigned char)c; 396 396 397 397 if(sys_read(0, &c, 1) != 1) 398 398 sys_exit(-5); 399 HEIGHT= ((int)(unsigned char)c) << 8;399 h = ((int)(unsigned char)c) << 8; 400 400 if(sys_read(0, &c, 1) != 1) 401 401 sys_exit(-5); 402 HEIGHT |= (int)(unsigned char)c; 402 h |= (int)(unsigned char)c; 403 #else 404 SDL_Surface *tmp, *surface; 405 uint32_t *pixels; 406 407 tmp = IMG_Load(name); 408 if(!tmp) 409 return NULL; 410 411 w = tmp->w; 412 h = tmp->h; 413 #endif 414 415 WIDTH = w > MAXWIDTH ? MAXWIDTH : w; 416 HEIGHT = h > MAXHEIGHT ? MAXHEIGHT : h; 403 417 404 418 floats = new(); … … 406 420 return NULL; 407 421 408 for(y = 0; y < HEIGHT; y++) 409 for(x = 0; x < WIDTH; x++) 422 #ifdef BYTECODE 423 for(y = 0; y < h; y++) 424 for(x = 0; x < w; x++) 410 425 { 411 426 if(sys_read(0, &c, 1) != 1) 412 427 sys_exit(-5); 428 if(x >= WIDTH || y >= HEIGHT) 429 continue; 413 430 put(floats, x, y, (double)(unsigned char)c / 0xff); 414 } 431 } 415 432 #else 416 SDL_Surface *tmp, *surface;417 uint32_t *pixels;418 419 tmp = IMG_Load(name);420 if(!tmp)421 return NULL;422 423 WIDTH = tmp->w > MAXWIDTH ? MAXWIDTH : tmp->w;424 HEIGHT = tmp->h > MAXHEIGHT ? MAXHEIGHT : tmp->h;425 floats = new();426 if(!floats)427 return NULL;428 429 433 surface = SDL_CreateRGBSurface(SDL_SWSURFACE, WIDTH, HEIGHT, 32, 430 434 0xff0000, 0xff00, 0xff, 0x0); … … 859 863 msg(" -6 <src> restrained (a,b,c,d) ED kernel analysis on src\n"); 860 864 msg(" -7 <src> restrained displacement study on src\n"); 865 msg(" -8 <src> displacement values on src\n"); 861 866 } 862 867 … … 891 896 { 892 897 double *dest = ed(src, false, 7, 0, 893 0, 3, 5, 1, 0,894 0, 0, 0, 0, 0);898 0, 3, 5, 1, 0, 899 0, 0, 0, 0, 0); 895 900 study(src, dest, 1.2, 0.001, .16, .28); 896 901 del(dest); … … 1068 1073 break; 1069 1074 1075 case 8: 1076 { 1077 const int STEP = 32; 1078 double mat[NN][NN]; 1079 double *dest = ed(src, false, 7, 0, 1080 0, 3, 5, 1, 0, 1081 0, 0, 0, 0, 0); 1082 double *tmp, *tmp2; 1083 int dx, dy; 1084 1085 makegauss(mat, 1.2, 0., 0.); 1086 tmp = gauss(src, mat); 1087 for(dy = 0; dy <= STEP; dy++) 1088 { 1089 for(dx = 0; dx <= STEP; dx++) 1090 { 1091 double fy = 2. / STEP * (dy - STEP / 2.); 1092 double fx = 2. / STEP * (dx - STEP / 2.); 1093 1094 makegauss(mat, 1.2, fx, fy); 1095 tmp2 = gauss(dest, mat); 1096 msg("%g %g %g\n", fy, fx, 1000. * dist(tmp, tmp2, 1.)); 1097 del(tmp2); 1098 } 1099 msg("\n"); 1100 } 1101 del(tmp); 1102 del(dest); 1103 del(src); 1104 } 1105 break; 1106 1070 1107 #if 0 1071 1108 tmp = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0); … … 1099 1136 1100 1137 #if 0 1101 # define STEP 321102 dest = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0);1103 makegauss(mat, 1.2, 0., 0.);1104 tmp = gauss(src, mat);1105 for(dy = 0; dy < STEP; dy++)1106 {1107 for(dx = 0; dx < STEP; dx++)1108 {1109 double fy = 2. / STEP * (dy - STEP / 2.);1110 double fx = 2. / STEP * (dx - STEP / 2.);1111 1112 makegauss(mat, 1.2, fx, fy);1113 tmp2 = gauss(dest, mat);1114 msg("%g %g %g\n", fy, fx, 1000. * dist(tmp, tmp2, 1.));1115 fflush(stdout);1116 del(tmp2);1117 }1118 msg("\n");1119 }1120 1138 1121 1139 save(dest, "output.bmp");
Note: See TracChangeset
for help on using the changeset viewer.