FUNCTION TEST(X,Y) C DIMENSION QA(2) VECTOR VCAS(1) C C X=QA(1) C Y=QA(2) C WRITE(6,101) X,Y 101 FORMAT(' X,Y=',2F6.2) C C LES 2 FONCTIONS ``qtest.for'' ET ``test.for'' DOIVENT A TOUT C MOMENT ETRE QUASI-IDENTIQUES. C C POUR PASSER DE ``QTEST'' A ``TEST'' IL Y A 4 CHANGEMENTS: C 1) QTEST -> TEST C 2) QA -> X,Y C 3) C DEVANT ``DIMENSION QA(2)'' C 4) C DEVANT ``X=QA(1)'' ET DEVANT ``Y=QA(2)'' C C ``TEST'' EST POUR TRACER UN HISTOGRAMME PAR: FUN2 10 TEST.FOR C ``QTEST'' EST POUR LES TESTS DE BALAYAGE DE L'HISTO. ON Y PASSE C LES ARGUMENTS SOUS FORME VECTORIELLE PUISQU'ON NE C PEUT PAS LES PASSER SOUS FORME SCALAIRE PAR [X],[Y] (message d'erreur) C C La fonction TEST(X,Y) est utilisee dans MAPO#3D (et ANIM#3D) pour C visualisation 3d par HI/PLOT C C CAS=1: 2 GAUSSIENNES de centres (1,2) (-3,-2)-> -60 C GOTO 210 A=2 ; B=3 ; H1=2 ; H2=1 TEST=PAM(X,Y,A,B,H1,H2) 210 CONTINUE C 2 CONTINUE CCCC C 3) REPRESENTATION DE BEAULIEU C REMARQUE: LES DETAILS (COMME LES TOURS DE GUET) C N'APPARAISSENT QUE SI ON ZOOME DESSUS, AUTREMENT C IL FAUDRAIT C UN DECOUPAGE TRES FIN POUR LES RENDRE VISIBLES C (MAIS UN TEL DECOUPAGE NORCIT L'IMAGE) IF(CAS.NE.3) GOTO 3 C C MUR D'ENCEINTE + CHEMIN DE RONDE DERRIERE MUR XZ=0 ; YZ=0 RA1=7.8 ; RA2=8. H=1. E1=HE(X,Y,XZ,YZ,RA1,RA2,H) RB1=7.4 ; RB2=RA1 H=0.5 E2=HE(X,Y,XZ,YZ,RB1,RB2,H) E=E1+E2 C C 4 TOURS CARRES DEVANT LE REMPART C COTE DU CARRE=2A C 5 MARS 2013: ON A MIS LES MURS // AU REMPART GOTO 310 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 310 CONTINUE BX=0.4 ; BY=BX XZ=8+BX/2 ; YZ=0 ; H=2 C T1=HM(X,Y,XZ,YZ,BX,BY,H) C A=0.1 ; H1=2.5 ; H2=0.8 C XZ=8+A ; YZ=0 C C T1 C COORDONNEES (XRZ,YRZ) DE L'EMPLACEMENT CHOISI AL=40 ; AL=AL*3.14159/180 CO=COS(AL) ; SI=SIN(AL) XRZ=XZ*CO ; YRZ=XZ*SI C ON CENTRE LE REPERE SUR CE POINT XX=X-XRZ ; YY=Y-YRZ C ON FAIT UNE ROTATION DU MEME ANGLE AL XX2=XX*CO+YY*SI ; YY2=XX*SI-YY*CO T1=PA4(XX2,YY2,A,H1,H2) C C T2 C COORDONNEES (XRZ,YRZ) DE L'EMPLACEMENT CHOISI AL=110 ; AL=AL*3.14159/180 CO=COS(AL) ; SI=SIN(AL) XRZ=XZ*CO ; YRZ=XZ*SI C ON CENTRE LE REPERE SUR CE POINT XX=X-XRZ ; YY=Y-YRZ C ON FAIT UNE ROTATION DU MEME ANGLE AL XX2=XX*CO+YY*SI ; YY2=XX*SI-YY*CO T2=PA4(XX2,YY2,A,H1,H2) C C T3 C COORDONNEES (XRZ,YRZ) DE L'EMPLACEMENT CHOISI AL=230 ; AL=AL*3.14159/180 CO=COS(AL) ; SI=SIN(AL) XRZ=XZ*CO ; YRZ=XZ*SI C ON CENTRE LE REPERE SUR CE POINT XX=X-XRZ ; YY=Y-YRZ C ON FAIT UNE ROTATION DU MEME ANGLE AL XX2=XX*CO+YY*SI ; YY2=XX*SI-YY*CO T3=PA4(XX2,YY2,A,H1,H2) C C T4 C COORDONNEES (XRZ,YRZ) DE L'EMPLACEMENT CHOISI AL=300 ; AL=AL*3.14159/180 CO=COS(AL) ; SI=SIN(AL) XRZ=XZ*CO ; YRZ=XZ*SI C ON CENTRE LE REPERE SUR CE POINT XX=X-XRZ ; YY=Y-YRZ C ON FAIT UNE ROTATION DU MEME ANGLE AL XX2=XX*CO+YY*SI ; YY2=XX*SI-YY*CO T4=PA4(XX2,YY2,A,H1,H2) C T=T1+T2+T3+T4 C C ABBATIALE C FACTEUR D'AGRANDISSEMENT G -> LORSQUE J'AI MIS C L'ABBATIALE SUR LE MEME DESSIN QUE LA CHAPELLE DES PENITENTS C JE ME SUIS APERCU QUE POUR LA CHAPELLE J'AVAIS PRIS DES C DIMENSIONS BIEN PLUS GRANDES QUE CELLES DE L'ABBATIALE G=2 C C CORPS PRINCIPAL C LA BASE EST (BX)x(BY) SOIT (2*G)x(0.8*G) XZ=0*G YZ=0*G BX=2*G BY=0.8*G H=1.6*G A1=HM(X,Y,XZ,YZ,BX,BY,H) C PARTIE ARRONDIES COTE CHOEUR XZ=1.2*G YZ=0*G BX=0.4*G BY=0.4*G H=1.1*G A2=HM(X,Y,XZ,YZ,BX,BY,H) C TOUR CARREE COTE OUEST XZ=-0.8*G YZ=-0.2*G BX=0.4*G BY=0.4*G H=2.5*G A3=HM(X,Y,XZ,YZ,BX,BY,H) C MINCE TOURELLE SURMONTANT LA TOUR XZ=-0.8*G YZ=-0.2*G BX=0.12*G BY=0.12*G H=0.7*G A4=HM(X,Y,XZ,YZ,BX,BY,H) C TOUR RONDE SUR LE TOIT COTE CHOEUR XZ=0.6*G YZ=0*G R=0.20*G H=1.5*G A5=HT(X,Y,XZ,YZ,R,H) C CLOITRE (MAINTENANT DETRUIT) COTE NORD XZ=0.5*G YZ=0.9*G BX=1*G BY=1*G H=0.8*G A6A=HM(X,Y,XZ,YZ,BX,BY,H) BX=0.6*G BY=0.6*G A6B=HM(X,Y,XZ,YZ,BX,BY,H) A6=A6A-A6B C TOTAL A=A1+A2+A3+A4+A5+A6 C TEST=E+T+A C WRITE(6,200) E,TEST 200 FORMAT(' E,TEST=',2F5.1) 3 CONTINUE CCCC C 4) EFFETS DE PERSPECTIVE C MAISONS RECTANGULAIRES LE LONG D'UNE RUE IF(CAS.NE.4) GOTO 4 XZ=2 BX=1 YZ=2.5 BY=2. H=2 T1=HM(X,Y,XZ,YZ,BX,BY,H) H=3 YZ=7.5 T2=HM(X,Y,XZ,YZ,BX,BY,H) C C GOTO 41 XZ=8 YZ=5 XX=X-XZ YY=Y-YZ A=1.1 B=2.5 H1=2 H2=1 T3=PA(XX,YY,A,B,H1,H2) 41 CONTINUE C TEST=T1+T2+T3 4 CONTINUE C CCCC C 5) CHAPELLE DES PENITENTS: SURFACE AU SOL-> -50 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) THEN HE=H C WRITE(6,100) X,Y,HE 100 FORMAT(' X,Y=',2(F5.1),' HE=',F5.1) ENDIF END CCCCCCCCCCCCCCCCCCCCCCCCC FUNCTION PA(X,Y,A,B,H1,H2) C MAISON AVEC TOIT EN PENTE C LIGNE DE FAITE SELON OY C SECTION AU SOL: RECTANGLE DE CENTRE (0,0) C LARGEUR SELON OX: -A,A C LONGUEUR SELON OY: -B,B C HAUTEUR DU PARALLELEPIPEDE: H1 C HAUTEUR DU TOIT SOUS FAITE: H2 C C PENTE DU TOIT C P=H2/(A/SQRT(2.)) P=H2/A C POUR AVOIR UNE HAUTEUR H1 IL FAUT QUE: C -A0 C LIGNE DE FAITE SELON OY C SECTION AU SOL: RECTANGLE DE CENTRE (0,0) C LARGEUR SELON OX: -A,A C LONGUEUR SELON OY: -B,B C HAUTEUR DU PARALLELEPIPEDE: H1 C HAUTEUR DU TOIT SOUS FAITE: H2 C C PENTE DU TOIT P=H2/(A/SQRT(2.)) C POUR AVOIR UNE HAUTEUR H1 IL FAUT QUE: C -A0,Y>0,X>Y), PUIS EN TOURNANT DANS LE SENS C TRIGONOMETRIQUE C C ON SUPPOSE QUE L>A IF(AL.LT.A) THEN WRITE(6,200) AL,A 200 FORMAT(' PCA8: AL0) DE 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 FORMULE ET 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 IF(Y.LE.0) PC=0 C PCM=PC END