DECLARE FUNCTION lax! (x!, y!, z!) DECLARE FUNCTION lay! (x!, y!, z!) DECLARE FUNCTION f! (x!, z!) DECLARE SUB triangolo (x1!, y1!, x2!, y2!, x3!, y3!, c1!, c2!) DIM SHARED passo, scala, cu 'CLS 'PRINT "Introduci un numero da 1 a 24" 'INPUT cu 'cambia i valori di cu per visualizzare curve diverse 'si possono cambiare la scala, e il passo 'nonch‚ i colori SCREEN 12 col = 9 cu = 1 colorass = 14 coloret = 15 colores = 8 passo = .3 cox = 1.08 coz = 1 scala = 40 'pi— Š grande, pi— Š grande il disegno x1 = -8 x2 = 8 z1 = -8 z2 = 8 FOR x = x1 - passo * cox / 2 TO x2 - passo * cox / 2 STEP passo * cox FOR z = z1 - passo * coz / 2 TO z2 - passo * coz / 2 STEP passo * coz y = 0 xx = lax(x, y, z) yy = lay(x, y, z) xx1 = lax(x + passo * cox, y, z) yy1 = lay(x + passo * cox, y, z) xx2 = lax(x, y, z + passo * coz) yy2 = lay(x, y, z + passo * coz) LINE (xx1, yy1)-(xx, yy), coloret LINE (xx2, yy2)-(xx, yy), coloret NEXT z NEXT x LINE (lax(0, 0, 0), lay(0, 0, 0))-(lax(0, 0, 0), lay(0, (x2 + z2) / 2, 0)), colorass LINE (lax(0, 0, 0), lay(0, 0, 0))-(lax(x2, 0, 0), lay(x2, 0, 0)), colorass LINE (lax(0, 0, 0), lay(0, 0, 0))-(lax(0, 0, z2), lay(0, 0, z2)), colorass FOR x = x1 TO x2 STEP passo * cox FOR z = z1 TO z2 STEP passo * coz y = f(x, z) xx = lax(x, y, z) yy = lay(x, y, z) y = f((x + passo * cox / 2), (z + passo * coz / 2)) xx1 = lax(x + passo * cox / 2, y, z + passo * coz / 2) yy1 = lay(x + passo * cox / 2, y, z + passo * coz / 2) y = f((x + passo * cox / 2), (z - passo * coz / 2)) xx2 = lax(x + passo * cox / 2, y, z - passo * coz / 2) yy2 = lay(x + passo * cox / 2, y, z - passo * coz / 2) y = f((x - passo * cox / 2), (z + passo * coz / 2)) xx3 = lax(x - passo * cox / 2, y, z + passo * coz / 2) yy3 = lay(x - passo * cox / 2, y, z + passo * coz / 2) y = f((x - passo * cox / 2), (z - passo * coz / 2)) xx4 = lax(x - passo * cox / 2, y, z - passo * coz / 2) yy4 = lay(x - passo * cox / 2, y, z - passo * coz / 2) 'LINE (xx1, yy1)-(xx1, lay(x + passo * cox / 2, 0, z + passo * coz / 2)), colores, , &H1111 PSET (xx1, lay(x + passo * cox / 2, 0, z + passo * coz / 2)), coloret IF (xx1 > 0 AND xx1 < 640 AND yy1 > 0 AND yy1 < 480) OR (xx3 > 0 AND xx3 < 640 AND yy3 > 0 AND yy3 < 480) OR (xx2 > 0 AND xx2 < 640 AND yy2 > 0 AND yy2 < 480) OR (xx4 > 0 AND xx4 < 640 AND yy4 > 0 AND yy4 < 480) THEN triangolo xx, yy, xx1, yy1, xx2, yy2, 1, col triangolo xx, yy, xx4, yy4, xx2, yy2, 1, col triangolo xx, yy, xx1, yy1, xx3, yy3, 1, col triangolo xx, yy, xx3, yy3, xx4, yy4, 1, col LINE (xx4, yy4)-(xx2, yy2), 11 LINE (xx4, yy4)-(xx3, yy3), 11 END IF NEXT z NEXT x FOR x = x1 - passo * cox / 2 TO x2 - passo * cox / 2 STEP passo * cox FOR z = z1 - passo * coz / 2 TO z2 - passo * coz / 2 STEP passo * coz y = 0 xx = lax(x, y, z) yy = lay(x, y, z) xx1 = lax(x + passo * cox, y, z) yy1 = lay(x + passo * cox, y, z) xx2 = lax(x, y, z + passo * coz) yy2 = lay(x, y, z + passo * coz) ' IF x <> 0 THEN IF POINT(xx, yy) = coloret AND POINT(xx1, yy1) = coloret THEN LINE (xx1, yy1)-(xx, yy), coloret ' ELSE ' IF POINT(xx, yy) = coloret AND POINT(xx1, yy1) = coloret THEN ' LINE (xx1, yy1)-(xx, yy), colorass ' PSET (xx1, yy1), coloret ' PSET (xx, yy), coloret ' END IF ' END IF ' IF z <> 0 THEN IF POINT(xx, yy) = coloret AND POINT(xx2, yy2) = coloret THEN LINE (xx2, yy2)-(xx, yy), coloret ' ELSE ' IF POINT(xx, yy) = coloret AND POINT(xx2, yy2) = coloret THEN ' LINE (xx2, yy2)-(xx, yy), colorass ' PSET (xx2, yy2), coloret ' PSET (xx, yy), coloret ' END IF ' END IF NEXT z NEXT x WHILE INKEY$ = "": WEND FUNCTION f (x, z) IF cu = 1 THEN f = COS(SQR(x ^ 2 + z ^ 2) * 2 + 2 * 3.1415 * (9 / 10)) + 1 IF cu = 2 THEN f = ABS(COS(SQR(x ^ 2 + z ^ 2) * 2)) IF cu = 3 THEN f = LOG(COS(SQR(x ^ 2 + z ^ 2) * 2) + 1) IF cu = 4 THEN f = LOG((SQR(x ^ 2 + z ^ 2) / 2)) IF cu = 5 THEN f = ABS(x + z) / 4 IF cu = 6 THEN f = x ^ 2 + z ^ 2 - 5 IF cu = 7 THEN f = ((x + y) ^ 2) / 4 IF cu = 8 THEN f = SQR((9 - x ^ 2 + ABS(9 - x ^ 2)) / 2) IF cu = 9 THEN f = SQR((9 - x ^ 2 - z ^ 2 + ABS(9 - x ^ 2 - z ^ 2)) / 2) IF cu = 10 THEN f = -SQR((9 - x ^ 2 - z ^ 2 + ABS(9 - x ^ 2 - z ^ 2)) / 2) IF cu = 11 THEN f = SQR((9 - (x / 2) ^ 2 - z ^ 2 + ABS(9 - (x / 2) ^ 2 - z ^ 2)) / 2) IF cu = 12 THEN f = SQR((9 - x ^ 2 + z ^ 2 + ABS(9 - x ^ 2 + z ^ 2)) / 2) IF cu = 13 THEN f = SQR((3 + x ^ 2 + z ^ 2 + ABS(3 + x ^ 2 + z ^ 2)) / 2) IF cu = 14 THEN f = 4 - SQR((3 + x ^ 2 + z ^ 2 + ABS(3 + x ^ 2 + z ^ 2)) / 2) IF cu = 15 THEN f = 2 * EXP(-x ^ 2 - z ^ 2) IF cu = 16 THEN f = EXP(ABS(x) ^ SIN(x) - ABS(z) ^ SIN(z)) / 2 IF cu = 17 THEN f = SIN(x / 2) * SIN(z / 2) IF cu = 18 THEN f = (6 - (ABS(z) + ABS(x)) + ABS(-6 + ABS(z) + ABS(x))) / 3 IF cu = 19 THEN f = (6 - SQR(x ^ 2 + z ^ 2) + ABS(6 - SQR(x ^ 2 + z ^ 2))) / 2 IF cu = 20 THEN f = (6 - SQR(x ^ 2 + z ^ 2) - SIN(2 * SQR(x ^ 2 + z ^ 2))) IF cu = 21 THEN f = COS(2 * x / (ABS(z) + 2)) IF cu = 22 THEN f = SIN(2 * x ^ 2 / (ABS(z) + 2)) IF cu = 23 THEN f = SIN(SQR(ABS(x ^ 2 - z ^ 2))) IF cu = 24 THEN f = 2 - (x ^ 2 + z ^ 2) ^ (1 / 3) IF cu = 25 THEN f = x * z / SQR(z ^ 2 + x ^ 2) IF cu = 26 THEN f = SIN(SQR((10 * x) ^ 2 + (10 * z) ^ 2)) / ((10 * z) ^ 2 + (10 * x) ^ 2) * 5 END FUNCTION FUNCTION lax (x, y, z) lax = scala * (-x * SQR(3) / 2 + z * SQR(3) / 2) + 320 END FUNCTION FUNCTION lay (x, y, z) lay = -scala * (-x / 2 - z / 2 + y) + 240 END FUNCTION SUB triangolo (x11, y11, x22, y22, x33, y33, c1, c2) x1 = x11 y1 = y11 x2 = x22 y2 = y22 x3 = x33 y3 = y33 IF y2 < y1 THEN SWAP y2, y1: SWAP x1, x2 IF y3 < y1 THEN SWAP y3, y1: SWAP x3, x1 IF y3 < y2 THEN SWAP y3, y2: SWAP x3, x2 IF c2 > 0 THEN IF y1 <> y2 THEN FOR a = y1 TO y2 xp = x1 + (a - y1) * (x2 - x1) / (y2 - y1) xa = x1 + (a - y1) * (x3 - x1) / (y3 - y1) LINE (xp, a)-(xa, a), c2 NEXT a END IF IF y2 <> y3 THEN FOR a = y2 TO y3 xp = x2 + (a - y2) * (x3 - x2) / (y3 - y2) xa = x1 + (a - y1) * (x3 - x1) / (y3 - y1) LINE (xp, a)-(xa, a), c2 NEXT a END IF END IF LINE (x1, y1)-(x2, y2), c1 LINE (x3, y3)-(x2, y2), c1 LINE (x1, y1)-(x3, y3), c1 END SUB