-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpcsurf.bas
More file actions
24 lines (24 loc) · 1.11 KB
/
pcsurf.bas
File metadata and controls
24 lines (24 loc) · 1.11 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
10 '3D surface plot with hidden lines removal K Moerman
20 SCREEN 9: CLS '640x350 pixels
30 XMAX = 12: YMAX = 12: ZMAX = 1.5: NH = 120: NV = 100: SCALE = 210
40 DEFINT V, H: HM = 640 / 2: VM = 350 / 2: PI = 4 * ATN(1): DIM FMAX%(640), FMIN%(640)
50 ALPHA = PI / 4: K = .4: CA = K * COS(ALPHA): SA = K * SIN(ALPHA)
60 DY = 2 * YMAX / NV: DX = 2 * XMAX / NH: Y = -YMAX
70 FOR V = 0 TO NV
80 X = -XMAX: FIRST1 = 0: FIRST2 = 0
90 FOR H = 0 TO NH
100 R = SQR(X * X + Y * Y): IF R = 0 THEN Z = 1 ELSE Z = SIN(R) / R
110 XX = X / XMAX * SCALE: YY = Y / YMAX * SCALE: ZZ = Z / ZMAX * SCALE
120 XSCR = HM + XX + YY * CA: YSCR = VM - ZZ - SA * YY
130 IF 348 - YSCR > FMAX%(XSCR) THEN GOSUB 180 ELSE FIRST1 = 0
140 IF YSCR > FMIN%(XSCR) THEN GOSUB 210 ELSE FIRST2 = 0
150 X = X + DX: NEXT H
160 Y = Y + DY: NEXT V: END
170 'subroutines for drawing
180 IF FIRST1 = -1 THEN LINE (XSCR2, YSCR2)-(XSCR, YSCR), 10
190 FMAX%(XSCR) = 348 - YSCR: XSCR2 = XSCR: YSCR2 = YSCR: FIRST1 = -1
200 RETURN
210 IF FIRST2 = -1 THEN LINE (XSCR2, YSCR2)-(XSCR, YSCR), 2
220 FMIN%(XSCR) = YSCR: XSCR2 = XSCR: YSCR2 = YSCR: FIRST2 = -1
230 RETURN