 FUNCTION ABBAYE(X,Y)
C
C  REPRESENTATION DE BEAULIEU

C REMARQUE:VUES DE LOIN, L'ABBATIALE OU LES 
C  TOURS DE GUET SONT TROP PETITES, IL FAUT DONC
C UN DECOUPAGE TRES FIN POUR LES RENDRE VISIBLES
C
C         MUR D'ENCEINTE
 XZ=0
 YZ=0
 R1=7.8
 R2=8
 H=1
 E=HE(X,Y,XZ,YZ,R1,R2,H)
C
C     TOURS CARRES SUR MUR D'ENCEINTE
 XZ=6
 YZ=SQRT(R1**2-XZ**2)
 BX=0.3
 BY=BX
 H=2
 T1=HM(X,Y,XZ,YZ,BX,BY,H)
 XZ=4
 YZ=-SQRT(R1**2-XZ**2)
 T2=HM(X,Y,XZ,YZ,BX,BY,H)
 XZ=-5
 YZ=-SQRT(R1**2-XZ**2)
 T3=HM(X,Y,XZ,YZ,BX,BY,H)
 XZ=-3
 YZ= SQRT(R1**2-XZ**2)
 T4=HM(X,Y,XZ,YZ,BX,BY,H)
 T=T1+T2+T3+T4
C
C         ABBATIALE
C    CORPS PRINCIPAL
 XZ=0
 YZ=0
 BX=2
 BY=0.8
 H=1.6
 A1=HM(X,Y,XZ,YZ,BX,BY,H)
C    PARTIE ARRONDIES COTE CHOEUR
 XZ=1.2
 YZ=0
 BX=0.4
 BY=0.4
 H=1.1
 A2=HM(X,Y,XZ,YZ,BX,BY,H)
C    TOUR CARREE COTE OUEST
 XZ=-0.8
 YZ=-0.2
 BX=0.4
 BY=0.4
 H=2.5
 A3=HM(X,Y,XZ,YZ,BX,BY,H)
C   MINCE TOURELLE SURMONTANT LA TOUR
 XZ=-0.8
 YZ=-0.2
 BX=0.12
 BY=0.12
 H=0.7
 A4=HM(X,Y,XZ,YZ,BX,BY,H)
C    TOUR RONDE SUR LE TOIT COTE CHOEUR
 XZ=0.6
 YZ=0
 XX=X-XZ
 YY=Y-YZ
 R=0.20
 H1=1
 H2=0.8
 A5=PC(XX,YY,R,H1,H2)
C     CLOITRE (MAINTENANT DETRUIT) COTE NORD
 XZ=0.5
 YZ=0.9
 BX=1
 BY=1
 H=0.8
 A6A=HM(X,Y,XZ,YZ,BX,BY,H)
 BX=0.6
 BY=0.6
 A6B=HM(X,Y,XZ,YZ,BX,BY,H)
 A6=A6A-A6B
C           TOTAL
 A=A1+A2+A3+A4+A5+A6
C
 ABBAYE=E+T+A
 END
CCCCCCCCCCCCCCCCCCCCCCCC
 FUNCTION HA(X,Y,X1,X2,Y1,Y2,H)
C LA FCT VAUT H DS LE RECTANGLE X1,X2,Y1,Y2 
C ET 0 AILLEURS
C POUR AVOIR H IL FAUT DONC QUE:
C X1<X<X2 ET Y1<Y<Y2
 PX=(X-X1)*(X-X2)
 PY=(Y-Y1)*(Y-Y2)
 IF(PX.GT.0.) TX=0
 IF(PX.LT.0.) TX=1
 IF(PY.GT.0.) TY=0
 IF(PY.LT.0.) TY=1
 A=TX*TY
 IF(A.EQ.0) HA=0
 IF(A.EQ.1) HA=H
 END
CCCCCCCCCCCCCCCCCCCCCCCC
 FUNCTION HM(X,Y,XZ,YZ,BX,BY,H)
C FCT POUR REPRESENTER UNE MAISON PAR
C UN PARALLELEPIPEDE DE CENTRE (XZ,YZ),
C DE BASE BXxBY ET DE HAUTEUR H
 X1=XZ-BX/2 
 X2=XZ+BX/2
 Y1=YZ-BY/2
 Y2=YZ+BY/2
 HM=HA(X,Y,X1,X2,Y1,Y2,H)
 END
CCCCCCCCCCCCCCCCCCCCCCCCC
 FUNCTION HT(X,Y,XZ,YZ,R,H)
C FCT POUR REPRESENTER UNE TOUR PAR UN
C CYLINDRE DE CENTRE (XZ,YZ), DE RAYON R
C ET DE HAUTEUR H
 C=(X-XZ)**2+(Y-YZ)**2-R**2
 IF(C.LE.0) HT=H
 IF(C.GT.0) HT=0
 END
CCCCCCCCCCCCCCCCCCCCCCCCC
 FUNCTION HE(X,Y,XZ,YZ,R1,R2,H)
C FCT POUR REPRESENTER LE MUR D'ENCEINTE PAR
C UN ANNEAU CIRCULAIRE DE CENTRE (XZ,YZ), DE
C RAYON INTERIEUR R1, DE RAYON EXTERIEUR R2 
C ET DE HAUTEUR H
 C1=(X-XZ)**2+(Y-YZ)**2-R1**2
 C2=(X-XZ)**2+(Y-YZ)**2-R2**2
C
C IL FAUT QUE C1>0 ET C2<0
 IF(C1.LE.0) E1=0
 IF(C1.GT.0) E1=1
 IF(C2.LE.0) E2=1
 IF(C2.GT.0) E2=0
 A=E1*E2
 IF(A.EQ.0) HE=0
 IF(A.EQ.1) HE=H
 END
CCCCCCCCCCCCCCCCCCCC
 FUNCTION PA4(X,Y,A,H1,H2)
C TOUR CARREE SURMONTEE D'UN TOIT A 4 PANS
C SECTION AU SOL: CARRE DE CENTRE (0,0) ET COTE A
C HAUTEUR DE LA TOUR SANS LE TOIT: H1
C HAUTEUR DU TOIT: H2
C
C PENTE DU TOIT
 P=H2/A
C
C ON FAIT UNE ROTATION DE 45 DEGRES
 AL=45
 AL=AL*3.1416/180
 XX=X*COS(AL)+Y*SIN(AL)
 YY=X*SIN(AL)-Y*COS(AL)
C POUR AVOIR UNE HAUTEUR H1 IL FAUT QUE:
C -A<XX<A ET -A<YY<A
 PX=(XX+A)*(XX-A)
 PY=(YY+A)*(YY-A)
 TX=0
 TY=0
 IF(PX.LT.0.) TX=1
 IF(PY.LT.0.) TY=1
 QT=TX*TY
 IF(QT.EQ.0) PA4=0
C
C      TOIT
 IF(QT.EQ.1) THEN
 TX=0 
 TY=0
  IF(X.GE.0) TX=1
  IF(Y.GE.0) TY=1
  QT=TX*TY
  IF(QT.EQ.1) PA4=P*(-X-Y)+H2
 TX=0
 TY=0
  IF(X.LE.0) TX=1
  IF(Y.LE.0) TY=1
  QT=TX*TY
  IF(QT.EQ.1) PA4=P*(X+Y)+H2
 TX=0
 TY=0
  IF(X.LE.0) TX=1
  IF(Y.GE.0) TY=1
  QT=TX*TY
  IF(QT.EQ.1) PA4=P*(X-Y)+H2
 TX=0
 TY=0
  IF(X.GE.0) TX=1
  IF(Y.LE.0) TY=1
  QT=TX*TY
  IF(QT.EQ.1) PA4=P*(-X+Y)+H2
C
 PA4=PA4+H1
 ENDIF
C
 END
CCCCCCCCCCCCCCCCCCCCCCCCC
 FUNCTION PC(X,Y,R,H1,H2)
C TOUR CENTREE EN (0,0), DE RAYON R
C SURMONTE D'UN TOIT CONIQUE
C  H1=HAUTEUR DU CYLINDRE
C  H2=HAUTEUR DU TOIT CONIQUE
C VOIR DESSIN DS SCHAUM P. 51
 XZ=0
 YZ=0
 C=(X-XZ)**2+(Y-YZ)**2-R**2
C
 IF(C.GT.0) PC=0
C
 IF(C.LE.0) THEN
 PC=H1+H2-(H2/R)*SQRT(X**2+Y**2)
 ENDIF
C
 END
