-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGAUS.DO
More file actions
39 lines (39 loc) · 1.29 KB
/
GAUS.DO
File metadata and controls
39 lines (39 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
10 REM *** Based on 3D GAUSSIAN by JHM 01/26 ***
20 REM *** Tandy 200 version by dplassgit 01/26
50 CLS
60 REM INITIALIZE VARIABLES
70 SZ = 17
80 STP = 1.5
90 SIGMA = 5
100 SCALE = 40
110 REM DRAW GRID AND SURFACE
120 FOR X = -SZ TO SZ STEP STP
130 FOR Y = -SZ TO SZ STEP STP
140 REM CALCULATE GAUSSIAN HEIGHT
150 DIST = X * X + Y * Y
160 Z = SCALE * EXP(-DIST / (2 * SIGMA * SIGMA))
170 REM PROJECT TO 2D SCREEN (ISOMETRIC)
180 SX = 120 + X * 6 - Y * 3
190 SY = 80 - Z * 1.2 + X + Y
200 REM DRAW POINT
210 IF SX < 0 OR SX > 239 OR SY < 0 OR SY > 127 THEN 430
220 PSET (SX, SY)
240 REM DRAW CONNECTING LINES
250 IF X <= -SZ THEN 340
260 PX = 120 + (X - STP) * 6 - Y * 3
270 DIST2 = ((X - STP) * (X - STP) + Y * Y)
280 PZ = SCALE * EXP(-DIST2 / (2 * SIGMA * SIGMA))
290 PY = 80 - PZ * 1.2 + (X - STP) + Y
300 IF PX >= 0 AND PX <= 239 AND PY >= 0 AND PY <= 127 THEN LINE (PX, PY)-(SX, SY)
340 IF Y <= -SZ THEN 430
350 PX = 120 + X * 6 - (Y - STP) * 3
360 DIST3 = (X * X + (Y - STP) * (Y - STP))
370 PZ = SCALE * EXP(-DIST3 / (2 * SIGMA * SIGMA))
380 PY = 80 - PZ * 1.2 + X + (Y - STP)
390 IF PX >= 0 AND PX <= 239 AND PY >= 0 AND PY <= 127 THEN LINE (PX, PY)-(SX, SY)
430 NEXT:NEXT
450 REM DISPLAY TITLE
470 PRINT@0,"3D GAUSSIAN - T200"
490 PRINT "Press key to exit"
500 REM WAIT FOR KEY
510 A$ = INKEY$: IF A$ = "" THEN 510