| 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; |
| 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* |