Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
2 | CCCCCC THE MANDELBROT SET CALCULATION | |
3 | SUBROUTINE CALC2 | |
4 | C | |
5 | INTEGER MAXI,WIDTH,CR,LF | |
6 | COMMON /PARAM2/MAXI,WIDTH,CR,LF | |
7 | REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP | |
8 | COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP | |
9 | REAL CMPVAL | |
10 | REAL ZR,ZI,ZRN | |
11 | REAL X,Y | |
12 | REAL PX,PY | |
13 | DIMENSION PX(1),PY(1) | |
14 | INTEGER COUNT | |
15 | C | |
16 | CALL SCALE(LOWX,LOWY,HIGHX,HIGHY) | |
17 | C | |
18 | CCCCCC ENTER THE CALCULATION | |
19 | 299 CMPVAL=MAXVAL*MAXVAL | |
20 | X=LOWX | |
21 | Y=HIGHY | |
22 | C | |
23 | CCCCCC EINSTIEG IN DEN AKTUELLEN PUNKT | |
24 | 300 COUNT=0 | |
25 | ZR=0.0 | |
26 | ZI=0.0 | |
27 | C | |
28 | CCCCCC HIER DER ITERIERTE TEIL | |
29 | C | |
30 | 400 ZRN=ZR*ZR-ZI*ZI+X | |
31 | ZI=2.0*ZR*ZI+Y | |
32 | ZR=ZRN | |
33 | C | |
34 | IF ((ZR*ZR+ZI*ZI).GE.CMPVAL) GO TO 410 | |
35 | COUNT=COUNT+1 | |
36 | IF (COUNT.GE.MAXI) GO TO 410 | |
37 | GO TO 400 | |
38 | C | |
39 | CCCCCC PUNKT FERTIG | |
40 | 410 NOUT=32 | |
41 | C IF (COUNT.GE.8) NOUT=46 | |
42 | C IF (COUNT.GE.23) NOUT=43 | |
43 | C IF (COUNT.EQ.MAXI) NOUT=64 | |
44 | IF (COUNT.GE.8) NOUT=46 | |
45 | IF (COUNT.GE.23) NOUT=43 | |
46 | IF (COUNT.EQ.MAXI) NOUT=64 | |
47 | PX(1)=X | |
48 | PY(1)=Y | |
49 | CALL RSW(8,I) | |
50 | IF (COUNT.EQ.MAXI) CALL PLOT(1,PX,PY) | |
51 | IF(I.EQ.1) GO TO 500 | |
52 | C | |
53 | CC 411 CALL PCHAR(NOUT) | |
54 | C | |
55 | CCCCCC NEUEN PUNKT MACHEN | |
56 | 500 X = X + XSTEP | |
57 | CCCCCC ZEILE NOCH NICHT VOLL? | |
58 | IF (X.LE.HIGHX) GO TO 300 | |
59 | CCCCCC X AN ANFANG SETZTEN, CR+LF DRUCKEN | |
60 | X = LOWX | |
61 | CC CALL PCHAR(13) | |
62 | IF(I.EQ.1) GO TO 501 | |
63 | CC CALL PCHAR(10) | |
64 | CCCCCC Y WEITERRUECKEN - NEGATIV WEIL WIR VON OBEN KOMMEN | |
65 | 501 Y=Y-YSTEP | |
66 | IF (Y.GE.LOWY) GO TO 300 | |
67 | C | |
68 | CCCCCC HIER IST DAS BILD FERTIG. | |
69 | RETURN | |
70 | END |