* * $Id$ * * $Log$ * Revision 1.1.1.1 1996/04/01 15:02:29 mclareni * Mathlib gen * * #include "gen/pilot.h" SUBROUTINE POLROT(THETA,PHI,THPRIM,PHPRIM,THAXE,PHAXE,ROTANG) C C SUBROUTINE POUR CALCULER UNE ROTATION EN COORDONNEES POLAIRES C C THAXE,PHAXE=DIRECTION DE L#AXE,ROTANG=ANGLE DE ROTATION C C PI=3.14159265 C C SI THPRIM = 0.0,PHPRIM A N#IMPORTE QUELLE VALEUR C DIMENSION X(3),TENSO1(3),TENSO2(3),TENSO3(3) DATA PI/3.14159265/,PIHALF/1.57079633/ A=COS(ROTANG) B=1.0-A C=SIN(ROTANG) AX=SIN(THAXE) E1=AX*COS(PHAXE) E2=AX*SIN(PHAXE) E3=COS(THAXE) ET=SIN(THETA) X(1)=ET*COS(PHI) X(2)=ET*SIN(PHI) X(3)=COS(THETA) B12=B*E1*E2 B13=B*E1*E3 B23=B*E2*E3 C1=C*E1 C2=C*E2 C3=C*E3 TENSO1(1)=A+B*E1**2 TENSO1(2)=B12+C3 TENSO1(3)=B13-C2 TENSO2(1)=B12-C3 TENSO2(2)=A+B*E2**2 TENSO2(3)=B23+C1 TENSO3(1)=B13+C2 TENSO3(2)=B23-C1 TENSO3(3)=A+B*E3**2 Y1=0.0 Y2=0.0 Y3=0.0 DO 3 K=1,3 Y1=Y1+TENSO1(K)*X(K) Y2=Y2+TENSO2(K)*X(K) 3 Y3=Y3+TENSO3(K)*X(K) IF(Y1.NE.0.OR.Y2.NE.0.)GO TO 12 PHPRIM=0.0 THPRIM=PIHALF-SIGN(PIHALF,Y3) GO TO 13 12 PHPRIM=ATAN2(Y2,Y1) IF(PHPRIM)1,2,2 1 PHPRIM=PHPRIM+2.0*PI 2 CONTINUE IF(Y1.NE.0.OR.Y3.NE.0.)GO TO 15 THPRIM=PIHALF GO TO 13 15 COPHPR=COS(PHPRIM) IF(ABS(COPHPR).LT.0.7)GO TO 5 THPRIM=ATAN2(Y1/COS(PHPRIM),Y3) GO TO 13 5 THPRIM=ATAN2(Y2/SIN(PHPRIM),Y3) 13 RETURN END