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