1      SUBROUTINE PTINT2(XXP,YYP,A,AMU,X,Y,XI,YI,NX,INDXUI,INDXLI,INXUIE,
2     1                  INXLIE,ABORT)
3C
4C***  CALCULATES BOUNDRIES OF MACH LINES ON BODIES
5C
6      LOGICAL ABORT
7      COMMON /CONSNT/ PI,DEG,UNUSED,RAD
8      DIMENSION XXP(1),YYP(1),A(1),X(42),Y(42),XDIF(42),YDIF(42),XI(42),
9     1          YI(42),XP(42),YP(42)
10C
11      ABORT=.FALSE.
12      TAMU=SIN(AMU)/COS(AMU)
13      TMAMU=-TAMU
14      INDXUI=0
15      INDXLI=0
16      INXUIE=0
17      INXLIE=0
18      DX = -0.0001*XXP(NX)
19      DO 1000 KL=1,NX
20         XP(KL)=XXP(KL)
21 1000 YP(KL)=YYP(KL)
22      XP(NX+1)=XP(NX)
23      YP(NX+1)=-YP(NX)
24      NX1=NX+1
25      NXM1=NX-1
26      NX22M1=NX+21
27      DO 1010 I=1,NX1
28         X(I)=(XP(I)-A(1))*COS(-A(3)/RAD)+(YP(I)-A(2))*SIN(-A(3)/RAD)
29         Y(I)=(YP(I)-A(2))*COS(-A(3)/RAD)-(XP(I)-A(1))*SIN(-A(3)/RAD)
30         X(I+21)=(XP(I)-A(1))*COS(-A(3)/RAD)
31     1          +(-YP(I)-A(2))*SIN(-A(3)/RAD)
32         Y(I+21)=(-YP(I)-A(2))*COS(-A(3)/RAD)
33     1          -(XP(I)-A(1))*SIN(-A(3)/RAD)
34         L=I+21
35 1010 CONTINUE
36      IF(X(NX) .LT. 0.0 .AND. X(NX) .GT. DX) X(NX) = 0.0
37      IF(X(NX22M1) .LT. 0.0 .AND. X(NX22M1) .GT. DX) X(NX22M1) = 0.0
38      DO 1020 J=1,NX
39         IF(0.0.LE.X(J)) GO TO 1030
40 1020 CONTINUE
41 1030 INDEXU=J-1
42      DO 1040 J=1,NX
43         IF(0.0.LE.X(J+21)) GO TO 1050
44 1040 CONTINUE
45 1050 INDEXL=J+20
46      DO 1080 K=INDEXU,NX
47         XDIF(K)=X(K+1)-X(K)
48         YDIF(K)=Y(K+1)-Y(K)
49         IF(XDIF(K) .EQ. 0.0 .AND. YDIF(K) .EQ. 0.0) GO TO 1080
50         XI(K)=(Y(K)*XDIF(K)-X(K)*YDIF(K))/(XDIF(K)*TAMU-YDIF(K))
51         YI(K)=XI(K)*TAMU
52         IF(K.NE.INDEXU) GO TO 1070
53         IF(X(NX).LT.0.0) GO TO 1060
54         YIN=(YDIF(K)/XDIF(K))*(-X(K))+Y(K)
55         IF(YIN.GE.0.0) GO TO 1070
56 1060    ABORT=.TRUE.
57         RETURN
58 1070    CONTINUE
59         IF(XI(K).GE.X(K).AND.XI(K).LE.X(K+1)) GO TO 1090
60         IF(K.NE.NXM1) GO TO 1080
61         IF(XI(K).GT.X(K+1)) INXUIE=NX-1
62 1080 CONTINUE
63      K=NX
64 1090 INDXUI=K
65      DO 1120 K=INDEXL,NX22M1
66         XDIF(K)=X(K+1)-X(K)
67         YDIF(K)=Y(K+1)-Y(K)
68         IF(XDIF(K) .EQ. 0.0 .AND. YDIF(K) .EQ. 0.0) GO TO 1120
69         XI(K)=(Y(K)*XDIF(K)-X(K)*YDIF(K))/(XDIF(K)*TMAMU-YDIF(K))
70         YI(K)=-XI(K)*TAMU
71         IF(K.NE.INDEXL) GO TO 1110
72         IF(X(NX22M1).LT.0.0) GO TO 1100
73         YIN=(YDIF(K)/XDIF(K))*(-X(K))+Y(K)
74         IF(YIN.LE.0.0) GO TO 1110
75 1100    ABORT=.TRUE.
76         RETURN
77 1110    CONTINUE
78         IF(XI(K).GE.X(K).AND.XI(K).LE.X(K+1)) GO TO 1130
79         IF(K.NE.(NX22M1-1)) GO TO 1120
80         IF(XI(K).GT.X(K+1)) INXLIE=NX22M1-1
81 1120 CONTINUE
82      K=NX22M1
83 1130 INDXLI=K
84      RETURN
85      END
86