'=========================================================================== ' Subject: SINE GRAPH Date: 03-11-92 (10:20:00) ' Author: Rick Pedley Code: QB, QBasic ' Keys: SINE,GRAPH Packet: EGAVGA.ABC '=========================================================================== DEFINT A-Z DIM SineRow!(240), SineCol!(350) FOR x = 1 TO 240 SineRow!(x) = SIN(x / 10) * 30 NEXT x FOR x = 1 TO 350 SineCol!(x) = SIN(x / 20) * 30 NEXT x SCREEN 12, 0 'VGA 640 x 480 CF = 1: MaxVertRes = 480: MaxHorzRes = 640 R = 0: P = 0: H = 0 C = 0: A = 0: Z = 0: Under = -1 'Change to 0 for no under side. T = 1: L = 1: K = MaxVertRes: D = 0: G = 0 T1! = TIMER Start: P = K FOR C = T + D TO 1 STEP -CF A = T + L: R = A - C: IF R > 240 GOTO SkipSurface Z = (SineRow!(R) + SineCol!(C)) + 150 H = K - Z - R IF H >= P OR H < 0 GOTO Underside P = H: PSET (A - 1, P), 9 '<-Try 10,12,13,etc. Underside: IF Under THEN IF R = L OR R = L + 1 THEN G = H + 5: GOTO SkipUnder IF H <= G GOTO SkipUnder G = H: IF G > MaxVertRes GOTO SkipUnder PSET (A - 1, G), 1 '<-Try 2,4,12, etc. END IF SkipUnder: NEXT C SkipSurface: IF A = MaxHorzRes GOTO Done T = T + 1 IF T > 350 THEN T = 350 L = L + 1: D = D + 1 IF D = CF THEN D = 0 END IF GOTO Start Done: DO UNTIL LEN(INKEY$): LOOP