Révision 304 TrouNoir/trou_noir.c
trou_noir.c (revision 304) | ||
---|---|---|
154 | 154 |
} |
155 | 155 |
|
156 | 156 |
void impact(MYFLOAT d,MYFLOAT phi,int dim,MYFLOAT r,MYFLOAT b,MYFLOAT tho,MYFLOAT m, |
157 |
MYFLOAT **zp,MYFLOAT **fp,
|
|
157 |
MYFLOAT *zp,MYFLOAT *fp,
|
|
158 | 158 |
MYFLOAT q,MYFLOAT db, |
159 | 159 |
MYFLOAT h,MYFLOAT bss,int raie) |
160 | 160 |
{ |
... | ... | |
180 | 180 |
flx=spectre(rf,q,b,db,h,r,m,bss); |
181 | 181 |
} |
182 | 182 |
|
183 |
if (zp[xi][yi]==0.)
|
|
183 |
if (zp[xi+dim*yi]==0.)
|
|
184 | 184 |
{ |
185 |
zp[xi][yi]=1./rf;
|
|
185 |
zp[xi+dim*yi]=1./rf;
|
|
186 | 186 |
} |
187 | 187 |
|
188 |
if (fp[xi][yi]==0.)
|
|
188 |
if (fp[xi+dim*yi]==0.)
|
|
189 | 189 |
{ |
190 |
fp[xi][yi]=flx;
|
|
190 |
fp[xi+dim*yi]=flx;
|
|
191 | 191 |
} |
192 | 192 |
|
193 | 193 |
} |
194 | 194 |
|
195 |
void sauvegarde_pgm(char nom[24],unsigned int **image,int dim)
|
|
195 |
void sauvegarde_pgm(char nom[24],unsigned int *image,int dim) |
|
196 | 196 |
{ |
197 | 197 |
FILE *sortie; |
198 | 198 |
unsigned long i,j; |
... | ... | |
205 | 205 |
|
206 | 206 |
for (j=0;j<dim;j++) for (i=0;i<dim;i++) |
207 | 207 |
{ |
208 |
fputc(image[i][j],sortie);
|
|
208 |
fputc(image[i+dim*j],sortie);
|
|
209 | 209 |
} |
210 | 210 |
|
211 | 211 |
fclose(sortie); |
... | ... | |
223 | 223 |
MYFLOAT up,vp,pp; |
224 | 224 |
MYFLOAT us,vs,ps; |
225 | 225 |
MYFLOAT rp[TRACKPOINTS]; |
226 |
MYFLOAT **zp,**fp;
|
|
227 |
unsigned int **izp,**ifp;
|
|
226 |
MYFLOAT *zp,*fp;
|
|
227 |
unsigned int *izp,*ifp;
|
|
228 | 228 |
MYFLOAT zmx,fmx; |
229 | 229 |
int zimx=0,zjmx=0,fimx=0,fjmx=0; |
230 | 230 |
MYFLOAT phi,phd,php,nr,r; |
... | ... | |
315 | 315 |
printf("# Rayon externe : %f\n",re); |
316 | 316 |
printf("# Inclinaison a la normale en radian : %f\n",tho); |
317 | 317 |
|
318 |
zp=(MYFLOAT**)calloc(dim,sizeof(MYFLOAT*)); |
|
319 |
zp[0]=(MYFLOAT*)calloc(dim*dim,sizeof(MYFLOAT)); |
|
320 |
|
|
321 |
fp=(MYFLOAT**)calloc(dim,sizeof(MYFLOAT*)); |
|
322 |
fp[0]=(MYFLOAT*)calloc(dim*dim,sizeof(MYFLOAT)); |
|
318 |
zp=(MYFLOAT*)calloc(dim*dim,sizeof(MYFLOAT)); |
|
319 |
fp=(MYFLOAT*)calloc(dim*dim,sizeof(MYFLOAT)); |
|
323 | 320 |
|
324 |
izp=(unsigned int**)calloc(dim,sizeof(unsigned int*));
|
|
325 |
izp[0]=(unsigned int*)calloc(dim*dim,sizeof(unsigned int));
|
|
321 |
izp=(unsigned int*)calloc(dim*dim,sizeof(unsigned int));
|
|
322 |
ifp=(unsigned int*)calloc(dim*dim,sizeof(unsigned int));
|
|
326 | 323 |
|
327 |
ifp=(unsigned int**)calloc(dim,sizeof(unsigned int*)); |
|
328 |
ifp[0]=(unsigned int*)calloc(dim*dim,sizeof(unsigned int)); |
|
329 |
|
|
330 |
for (i=1;i<dim;i++) |
|
331 |
{ |
|
332 |
zp[i]=zp[i-1]+dim; |
|
333 |
fp[i]=fp[i-1]+dim; |
|
334 |
izp[i]=izp[i-1]+dim; |
|
335 |
ifp[i]=ifp[i-1]+dim; |
|
336 |
} |
|
337 |
|
|
338 | 324 |
nmx=dim; |
339 | 325 |
stp=dim/(2.*nmx); |
340 | 326 |
bmx=1.25*re; |
... | ... | |
425 | 411 |
cputime=(MYFLOAT)((mtv2-mtv1)/1000.); |
426 | 412 |
epoch=(MYFLOAT)(epoch2-epoch1); |
427 | 413 |
|
428 |
fmx=fp[0][0];
|
|
429 |
zmx=zp[0][0];
|
|
414 |
fmx=fp[0]; |
|
415 |
zmx=zp[0]; |
|
430 | 416 |
|
431 | 417 |
for (i=0;i<dim;i++) for (j=0;j<dim;j++) |
432 | 418 |
{ |
433 |
if (fmx<fp[i][j])
|
|
419 |
if (fmx<fp[i+dim*j])
|
|
434 | 420 |
{ |
435 | 421 |
fimx=i; |
436 | 422 |
fjmx=j; |
437 |
fmx=fp[i][j];
|
|
423 |
fmx=fp[i+dim*j];
|
|
438 | 424 |
} |
439 | 425 |
|
440 |
if (zmx<zp[i][j])
|
|
426 |
if (zmx<zp[i+dim*j])
|
|
441 | 427 |
{ |
442 | 428 |
zimx=i; |
443 | 429 |
zjmx=j; |
444 |
zmx=zp[i][j];
|
|
430 |
zmx=zp[i+dim*j];
|
|
445 | 431 |
} |
446 | 432 |
} |
447 | 433 |
|
... | ... | |
458 | 444 |
for (int i=0;i<dim;i++) |
459 | 445 |
for (int j=0;j<dim;j++) |
460 | 446 |
{ |
461 |
zcl=(int)(255/zmx*zp[i][dim-1-j]);
|
|
462 |
fcl=(int)(255/fmx*fp[i][dim-1-j]);
|
|
447 |
zcl=(int)(255/zmx*zp[i+dim*(dim-1-j)]);
|
|
448 |
fcl=(int)(255/fmx*fp[i+dim*(dim-1-j)]);
|
|
463 | 449 |
|
464 | 450 |
if (strcmp(argv[6],"NEGATIVE")==0) |
465 | 451 |
{ |
466 | 452 |
if (zcl>255) |
467 | 453 |
{ |
468 |
izp[i][j]=0;
|
|
454 |
izp[i+dim*j]=0;
|
|
469 | 455 |
} |
470 | 456 |
else |
471 | 457 |
{ |
472 |
izp[i][j]=255-zcl;
|
|
458 |
izp[i+dim*j]=255-zcl;
|
|
473 | 459 |
} |
474 | 460 |
|
475 | 461 |
if (fcl>255) |
476 | 462 |
{ |
477 |
ifp[i][j]=0;
|
|
463 |
ifp[i+dim*j]=0;
|
|
478 | 464 |
} |
479 | 465 |
else |
480 | 466 |
{ |
481 |
ifp[i][j]=255-fcl;
|
|
467 |
ifp[i+dim*j]=255-fcl;
|
|
482 | 468 |
} |
483 | 469 |
|
484 | 470 |
} |
... | ... | |
486 | 472 |
{ |
487 | 473 |
if (zcl>255) |
488 | 474 |
{ |
489 |
izp[i][j]=255;
|
|
475 |
izp[i+dim*j]=255;
|
|
490 | 476 |
} |
491 | 477 |
else |
492 | 478 |
{ |
493 |
izp[i][j]=zcl;
|
|
479 |
izp[i+dim*j]=zcl;
|
|
494 | 480 |
} |
495 | 481 |
|
496 | 482 |
if (fcl>255) |
497 | 483 |
{ |
498 |
ifp[i][j]=255;
|
|
484 |
ifp[i+dim*j]=255;
|
|
499 | 485 |
} |
500 | 486 |
else |
501 | 487 |
{ |
502 |
ifp[i][j]=fcl;
|
|
488 |
ifp[i+dim*j]=fcl;
|
|
503 | 489 |
} |
504 | 490 |
|
505 | 491 |
} |
... | ... | |
522 | 508 |
printf("No output file precised, useful for benchmarks...\n\n"); |
523 | 509 |
} |
524 | 510 |
|
525 |
free(zp[0]); |
|
526 | 511 |
free(zp); |
527 |
free(fp[0]); |
|
528 | 512 |
free(fp); |
529 | 513 |
|
530 |
free(izp[0]); |
|
531 | 514 |
free(izp); |
532 |
free(ifp[0]); |
|
533 | 515 |
free(ifp); |
534 | 516 |
|
535 | 517 |
} |
Formats disponibles : Unified diff