1 |
– |
/* Copyright (c) 1993 Regents of the University of California */ |
2 |
– |
|
1 |
|
#ifndef lint |
2 |
< |
static char SCCSid[] = "$SunId$ LBL"; |
2 |
> |
static const char RCSid[] = "$Id$"; |
3 |
|
#endif |
6 |
– |
|
4 |
|
/* Ce programme calcule les directions et les energies des rayons lumineux |
5 |
|
resultant du passage d'un rayon au travers d'un vitrage prismatique |
6 |
|
|
21 |
|
return(0.); |
22 |
|
return(sqrt(x)); |
23 |
|
} |
27 |
– |
#define sqrt(x) Sqrt(x) |
24 |
|
|
25 |
|
/* definitions de macros utiles */ |
26 |
|
|
99 |
|
|
100 |
|
/* Definition des routines */ |
101 |
|
|
102 |
< |
#define term(a,b) a/sqrt(a*a+b*b) |
102 |
> |
#define term(a,b) a/Sqrt(a*a+b*b) |
103 |
|
static |
104 |
|
prepare_matrices() |
105 |
|
{ |
205 |
|
FVECT v_temp; |
206 |
|
double det; |
207 |
|
|
208 |
< |
det = sqrt( (YY(v)*YY(v)+ZZ(v)*ZZ(v))*(YY(v)*YY(v)+ZZ(v)*ZZ(v))+ |
208 |
> |
det = Sqrt( (YY(v)*YY(v)+ZZ(v)*ZZ(v))*(YY(v)*YY(v)+ZZ(v)*ZZ(v))+ |
209 |
|
(XX(v)*XX(v)*YY(v)*YY(v))+(XX(v)*XX(v)*ZZ(v)*ZZ(v)) ); |
210 |
|
XX(v_temp) = (YY(v)*YY(v)+ZZ(v)*ZZ(v))/det; |
211 |
|
YY(v_temp) = -( XX(v)*YY(v) )/det; |
223 |
|
FVECT v_temp; |
224 |
|
double det; |
225 |
|
|
226 |
< |
det = sqrt( (ZZ(v)*ZZ(v)+YY(v)*YY(v)) ); |
226 |
> |
det = Sqrt( (ZZ(v)*ZZ(v)+YY(v)*YY(v)) ); |
227 |
|
XX(v_temp) = 0.; |
228 |
|
YY(v_temp) = -ZZ(v)/det; |
229 |
|
ZZ(v_temp) = YY(v)/det; |
400 |
|
if (egalite == 0) |
401 |
|
{ |
402 |
|
if (nbrayons == 0) ray = (TRAYON *)calloc(1,sizeof(TRAYON)); |
403 |
< |
else ray = (TRAYON *)realloc(ray, (nbrayons+1)*(sizeof(TRAYON))); |
403 |
> |
else ray = (TRAYON *)realloc((void *)ray, (nbrayons+1)*(sizeof(TRAYON))); |
404 |
|
if (ray == NULL) |
405 |
|
error(SYSTEM, "out of memory in sortie\n"); |
406 |
|
raytemp = &ray[nbrayons]; |
423 |
|
{ |
424 |
|
double det; |
425 |
|
|
426 |
< |
det = sqrt(X(r)*X(r)+Y(r)*Y(r)+Z(r)*Z(r)); |
427 |
< |
sinus = sqrt(Y(r)*Y(r)+Z(r)*Z(r))/det; |
428 |
< |
cosinus = sqrt(X(r)*X(r))/det; |
426 |
> |
det = Sqrt(X(r)*X(r)+Y(r)*Y(r)+Z(r)*Z(r)); |
427 |
> |
sinus = Sqrt(Y(r)*Y(r)+Z(r)*Z(r))/det; |
428 |
> |
cosinus = Sqrt(X(r)*X(r))/det; |
429 |
|
if (r.n == 1.) rapport = prism.np * prism.np; |
430 |
|
else rapport = 1./(prism.np * prism.np); |
431 |
|
return; |
444 |
|
X(r_reflechi) = -X(r_incident); |
445 |
|
Y(r_reflechi) = Y(r_incident); |
446 |
|
Z(r_reflechi) = Z(r_incident); |
447 |
< |
if(sinus > sqrt(rapport) || r_incident.dest == tot_ref) |
447 |
> |
if(sinus > Sqrt(rapport) || r_incident.dest == tot_ref) |
448 |
|
{ |
449 |
|
r_reflechi.ppar1 = r_incident.ppar1; |
450 |
|
r_reflechi.pper1 = r_incident.pper1; |
454 |
|
} |
455 |
|
else |
456 |
|
{ |
457 |
< |
r_reflechi.ppar1 = r_incident.ppar1*(rapport*cosinus-sqrt(rapport- |
458 |
< |
(sinus*sinus)))/(rapport*cosinus+sqrt(rapport-(sinus*sinus))); |
459 |
< |
r_reflechi.pper1 = r_incident.pper1*(cosinus-sqrt |
460 |
< |
(rapport-(sinus*sinus)))/(cosinus+sqrt(rapport-(sinus*sinus))); |
461 |
< |
r_reflechi.ppar2 = r_incident.ppar2*(rapport*cosinus-sqrt(rapport- |
462 |
< |
(sinus*sinus)))/(rapport*cosinus+sqrt(rapport-(sinus*sinus))); |
463 |
< |
r_reflechi.pper2 = r_incident.pper2*(cosinus-sqrt |
464 |
< |
(rapport-(sinus*sinus)))/(cosinus+sqrt(rapport-(sinus*sinus))); |
457 |
> |
r_reflechi.ppar1 = r_incident.ppar1*(rapport*cosinus-Sqrt(rapport- |
458 |
> |
(sinus*sinus)))/(rapport*cosinus+Sqrt(rapport-(sinus*sinus))); |
459 |
> |
r_reflechi.pper1 = r_incident.pper1*(cosinus-Sqrt |
460 |
> |
(rapport-(sinus*sinus)))/(cosinus+Sqrt(rapport-(sinus*sinus))); |
461 |
> |
r_reflechi.ppar2 = r_incident.ppar2*(rapport*cosinus-Sqrt(rapport- |
462 |
> |
(sinus*sinus)))/(rapport*cosinus+Sqrt(rapport-(sinus*sinus))); |
463 |
> |
r_reflechi.pper2 = r_incident.pper2*(cosinus-Sqrt |
464 |
> |
(rapport-(sinus*sinus)))/(cosinus+Sqrt(rapport-(sinus*sinus))); |
465 |
|
r_reflechi.e = r_incident.e *(((r_reflechi.ppar1*r_reflechi.ppar1+ |
466 |
|
r_reflechi.pper1*r_reflechi.pper1)/(r_incident.ppar1*r_incident.ppar1+ |
467 |
|
r_incident.pper1*r_incident.pper1))+((r_reflechi.ppar2*r_reflechi.ppar2 |
483 |
|
|
484 |
|
r_transmis = r_incident; |
485 |
|
trigo(r_incident); |
486 |
< |
if (sinus <= sqrt(rapport) && r_incident.dest != tot_ref) |
486 |
> |
if (sinus <= Sqrt(rapport) && r_incident.dest != tot_ref) |
487 |
|
{ |
488 |
|
X(r_transmis) = (X(r_incident)/(fabs(X(r_incident))))* |
489 |
< |
(sqrt(1.-(Y(r_incident)*Y(r_incident)+Z(r_incident)* |
489 |
> |
(Sqrt(1.-(Y(r_incident)*Y(r_incident)+Z(r_incident)* |
490 |
|
Z(r_incident))/rapport)); |
491 |
< |
Y(r_transmis) = Y(r_incident)/sqrt(rapport); |
492 |
< |
Z(r_transmis) = Z(r_incident)/sqrt(rapport); |
493 |
< |
r_transmis.ppar1 = r_incident.ppar1*2.*sqrt(rapport)*cosinus/ |
494 |
< |
(sqrt(rapport-sinus*sinus)+rapport*cosinus); |
495 |
< |
r_transmis.pper1 = r_incident.pper1*2.*cosinus/(cosinus+sqrt(rapport |
491 |
> |
Y(r_transmis) = Y(r_incident)/Sqrt(rapport); |
492 |
> |
Z(r_transmis) = Z(r_incident)/Sqrt(rapport); |
493 |
> |
r_transmis.ppar1 = r_incident.ppar1*2.*Sqrt(rapport)*cosinus/ |
494 |
> |
(Sqrt(rapport-sinus*sinus)+rapport*cosinus); |
495 |
> |
r_transmis.pper1 = r_incident.pper1*2.*cosinus/(cosinus+Sqrt(rapport |
496 |
|
- sinus*sinus)); |
497 |
< |
r_transmis.ppar2 = r_incident.ppar2*2.*sqrt(rapport)*cosinus/ |
498 |
< |
(sqrt(rapport-sinus*sinus)+rapport*cosinus); |
499 |
< |
r_transmis.pper2 = r_incident.pper2*2.*cosinus/(cosinus+sqrt(rapport |
497 |
> |
r_transmis.ppar2 = r_incident.ppar2*2.*Sqrt(rapport)*cosinus/ |
498 |
> |
(Sqrt(rapport-sinus*sinus)+rapport*cosinus); |
499 |
> |
r_transmis.pper2 = r_incident.pper2*2.*cosinus/(cosinus+Sqrt(rapport |
500 |
|
- sinus*sinus)); |
501 |
< |
r_transmis.e = (r_incident.e/2)*(sqrt(rapport-sinus*sinus)/cosinus) |
501 |
> |
r_transmis.e = (r_incident.e/2)*(Sqrt(rapport-sinus*sinus)/cosinus) |
502 |
|
*(((r_transmis.ppar1*r_transmis.ppar1+r_transmis.pper1* |
503 |
|
r_transmis.pper1) |
504 |
|
/(r_incident.ppar1*r_incident.ppar1+r_incident.pper1* |
728 |
|
|
729 |
|
|
730 |
|
static double |
731 |
< |
l_get_val() |
731 |
> |
l_get_val(char *nm) |
732 |
|
|
733 |
|
{ |
734 |
|
int val, dir, i, trouve, curseur; |