[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | Mathematics at DEC |
|
Moderator: | RUSURE::EDP |
|
Created: | Mon Feb 03 1986 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 2083 |
Total number of notes: | 14613 |
1037.0. "Henon graphs anyone??" by MYVAX::ROBERUC () Tue Mar 14 1989 21:57
{
Hi.
Below is program that prints a scaled plot of a Henon equation.
This is an equation that produces Henon Attractor (or the squashed
banana that is in many Chaos books. Below are the basic equations.)
/ \2
X = 1 + Y - A ( X )
n+1 n \ n/
Y = B Y
n+1 n
Some very interesting pictures can be drawn from some very simple
A, B, x, y, and number of Iterates to draw values.
A B x y Iterates
1.4 .3 0 0 5000 + : Henon attractor (banana)
.005 -1 0 0 5000 : a circle (I think)
.01 -.999 75 5 5000 : a butterfly (??)
.005 -.999 75 5 5000 : 4 circles
-.4 -.999 1.5 0 7000 : a paw print
-.6 -.999 0 0 5000 : a head to an egg (??)
.5 -.99 1.8 0 2000 : a spiral ??
.9 -.999 0 0 2000 : a triangular spiral
Its all very pretty and nice. I especially like the one butterfly
shape. But could someone tell me why the second one draws a very
near to a perfect circle??
Rich
}
[INHERIT ('SYS$LIBRARY:STARLET')] PROGRAM Loop (Input, Output);
VAR
I : UNSIGNED;
I_1, X, Y : INTEGER;
S_1, S_2,
Factor, X_Hi, X_Lo, Y_Hi, Y_Lo, A_1, B_1, X_1, X_2, Y_1, Y_2 : QUADRUPLE;
Bel, St, Dcs, Esc, C : CHAR;
Str : VARYING [80] OF CHAR;
F : TEXT;
BEGIN
Bel := CHR (7);
Esc := CHR (27);
Dcs := CHR (144);
St := CHR (156);
WRITE ('A: '); READLN (A_1);
WRITE ('B: '); READLN (B_1);
I_1 := 500;
X_1 := 0.0;
Y_1 := 0.0;
WRITE ('X: '); READLN (X_1); S_1 := X_1;
WRITE ('Y: '); READLN (Y_1); S_2 := Y_1;
WRITE ('I: '); READLN (I_1);
WRITE ('Graph, File, or Points? [G, F, or P]: ');
READLN (C);
IF (C = 'f') THEN C := 'F';
IF (C = 'g') THEN C := 'G';
IF (C = 'p') THEN C := 'P';
IF (C = 'G') OR
(C = 'F') THEN BEGIN
X_Hi := X_1; X_Lo := X_1;
Y_Hi := Y_1; Y_Lo := Y_1;
FOR I := 1 TO I_1 DO BEGIN
X_2 := 1 + Y_1 - (A_1 * (X_1 ** 2));
Y_2 := X_1 * B_1;
X_Hi := MAX (X_Hi, X_2);
X_Lo := MIN (X_Lo, X_2);
Y_Hi := MAX (Y_Hi, Y_2);
Y_Lo := MIN (Y_Lo, Y_2);
X_1 := X_2;
Y_1 := Y_2;
END;
Factor := 478 / MAX (X_Hi - X_Lo, Y_Hi - Y_Lo);
END;
X_1 := S_1;
Y_1 := S_2;
IF (C = 'G') THEN WRITELN (Esc + 'Pp;S(E); S[0,0]');
IF (C = 'F') THEN BEGIN
WRITE ('Filename: ');
READLN (Str);
OPEN (F, Str, HISTORY:=NEW);
REWRITE (F);
WRITELN (F, Esc + 'Pp;S(E); S[0,0]');
END;
FOR I := 1 TO I_1 DO BEGIN
IF (C = 'G') THEN BEGIN
X := ROUND ((X_1 - X_Lo) * Factor);
Y := ROUND ((Y_1 - Y_Lo) * Factor);
WRITELN ('p[', X:3, ',', Y:3, ']');
WRITELN ('v[', X:3, ',', Y:3, ']');
END;
IF (C = 'F') THEN BEGIN
X := ROUND ((X_1 - X_Lo) * Factor);
Y := ROUND ((Y_1 - Y_Lo) * Factor);
WRITELN (F, 'p[', X:3, ',', Y:3, ']');
WRITELN (F, 'v[', X:3, ',', Y:3, ']');
END;
IF (C = 'P') THEN BEGIN
WRITELN (I, X_1, Y_1);
END;
X_2 := 1 + Y_1 - (A_1 * (X_1 ** 2));
Y_2 := X_1 * B_1;
X_1 := X_2;
Y_1 := Y_2;
END;
IF (C = 'F') THEN WRITELN (F, St);
IF (C = 'G') THEN WRITELN (St);
END.
T.R | Title | User | Personal Name | Date | Lines |
---|
1037.1 | ...Oops... | MYVAX::ROBERUC | | Wed Mar 15 1989 13:28 | 6 |
| Two asides:
1: That program needs to be compiled in Pascal...
2: It draws using ReGIS escape sequences
Rich
|
1037.2 | one possible idea... | CTCADM::ROTH | If you plant ice you'll harvest wind | Fri Mar 17 1989 10:33 | 63 |
1037.3 | Henon Heiles DECwindows plotting programs | RKBA::TUCKER | That's a hell of a note! | Fri Jun 01 1990 19:59 | 28
|