c08e22bb |
1 | C APFELMAENNCHEN-PROGRAMM, 30.NOV.2004 PHILIPP HACHTMANN |
2 | C |
3 | C |
4 | COMPLEX C,Z,CTMP |
5 | C |
6 | REAL |
7 | + XIN1,XIN2,YIN1,YIN2,LOWX,LOWY,HIGHX,HIGHY, |
8 | + XSTEP,YSTEP,MAXVAL,TEMP, |
9 | + X,Y |
10 | C |
11 | INTEGER |
12 | + MAXI,COUNT,WIDTH, |
13 | + CR,LF,POSI,NEGA |
14 | C |
15 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
16 | C KONSTANTE WERTE |
17 | C |
18 | C (32=LEERZEICHEN, 88=X) |
19 | C |
20 | CR=13 |
21 | LF=10 |
22 | POSI=88 |
23 | NEGA=46 |
24 | C |
25 | CCCCCC SEITENBREITE: |
26 | WIDTH=70 |
27 | C |
28 | CCCCCC MAXIMALE ITERATIONSTIEFE |
29 | MAXI=100 |
30 | C |
31 | CCCCCC AUSSTIEGSWERT |
32 | MAXVAL=2.0 |
33 | C |
34 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
35 | C BILDDATEN |
36 | C |
37 | XIN1 = -1.50 |
38 | XIN2 = 0.50 |
39 | C |
40 | YIN1 = -1.00 |
41 | YIN2 = 1.00 |
42 | C |
43 | C |
44 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
45 | C STARTMELDUNG |
46 | 100 WRITE(1,10) |
47 | 10 FORMAT(40HMANDELBROT 30.NOV.2004 PHILIPP HACHTMANN ) |
48 | C |
49 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
50 | C STARTWERTE ENDGUELTIG FESTLEGEN |
51 | C |
52 | C EVENTUELL STARTWERTE TAUSCHEN |
53 | C |
54 | CCCCCC WENN XIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN |
55 | 150 I F(XIN2.GT.XIN1) GO TO 200 |
56 | TEMP = XIN1 |
57 | XIN1 = XIN2 |
58 | XIN2 = TEMP |
59 | C |
60 | CCCCCC WENN YIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN |
61 | 200 IF(YIN2.GT.YIN1) GO TO 201 |
62 | TEMP = YIN1 |
63 | YIN1 = YIN2 |
64 | YIN2 = TEMP |
65 | C |
66 | CCCCCC WERTE UEBERNEHMEN |
67 | 201 LOWX = XIN1 |
68 | HIGHX = XIN2 |
69 | LOWY = YIN1 |
70 | HIGHY = YIN2 |
71 | C |
72 | CCCCCC SCHRITTWEITEN AUSRECHNEN |
73 | XSTEP = (HIGHX-LOWX)/FLOAT(WIDTH) |
74 | YSTEP = 2.0 * XSTEP |
75 | C |
76 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
77 | C STARTWERTE AUSGEBEN |
78 | C |
79 | WRITE (1,20) |
80 | 20 FORMAT (9HSETTINGS:) |
81 | WRITE (1,30) LOWX, HIGHX |
82 | 30 FORMAT (12HX-WERTE VON ,1F8.5,5H BIS ,1F8.5) |
83 | WRITE (1,40) LOWY, HIGHY |
84 | 40 FORMAT (12HY-WERTE VON ,F8.5,5H BIS ,F8.5) |
85 | WRITE (1,50) MAXI, MAXVAL, XSTEP, YSTEP, WIDTH |
86 | 50 FORMAT ( 4HMAX:,I3, |
87 | + 8H MAXVAL:,F8.5, |
88 | + 7H XSTEP:,F8.5, |
89 | + 7H YSTEP:,F8.5, |
90 | + 7H WIDTH:,I2) |
91 | C |
92 | PAUSE 1 |
93 | C |
94 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
95 | C EIGENTLICHE BERECHNUNG |
96 | C |
97 | CCCCCC EINSTIEG IN BERECHNUNG |
98 | X=LOWX |
99 | Y=HIGHY |
100 | C |
101 | CCCCCC EINSTIEG IN DEN AKTUELLEN PUNKT |
102 | 300 C=CMPLX(X,Y) |
103 | COUNT=0 |
104 | Z=(0.0,0.0) |
105 | C |
106 | CCCCCC HIER DER ITERIERTE TEIL |
107 | 400 CTMP=Z*Z |
108 | Z=CTMP+C |
109 | IF ((CABS(Z)).GE.MAXVAL) GO TO 410 |
110 | COUNT=COUNT+1 |
111 | IF (COUNT.GE.MAXI) GO TO 420 |
112 | GO TO 400 |
113 | C |
114 | CCCCCC PUNKT DURCHGEFALLEN |
115 | 410 CALL PCHAR(NEGA) |
116 | GO TO 500 |
117 | C |
118 | CCCCCC PUNKT HAT MAXI ERREICHT |
119 | 420 CALL PCHAR(POSI) |
120 | C |
121 | C |
122 | CCCCCC NEUEN PUNKT MACHEN |
123 | 500 X = X + XSTEP |
124 | CCCCCC ZEILE NOCH NICHT VOLL? |
125 | IF (X.LT.HIGHX) GO TO 300 |
126 | CCCCCC X AN ANFANG SETZTEN, CR+LF DRUCKEN |
127 | X = LOWX |
128 | CALL PCHAR(CR) |
129 | CALL PCHAR(LF) |
130 | CCCCCC Y WEITERRUECKEN - NEGATIV WEIL WIR VON OBEN KOMMEN |
131 | Y=Y-YSTEP |
132 | IF (Y.GT.LOWY) GO TO 300 |
133 | C |
134 | CCCCCC HIER IST DAS BILD FERTIG. |
135 | WRITE(1, 60) |
136 | 60 FORMAT (6HFERTIG) |
137 | C |
138 | CCCCCC KURZE PAUSE, DANN NEUSTART |
139 | PAUSE 7 |
140 | GO TO 100 |
141 | END |
142 | $0 |