'* fxy.bas - graphs f(x,y) '* '* Justin Keswick '* Qbasic Developer '* Business Consultant '* 89 Beachview Crescent '* Toronto, Ontario '* cell 416-707-8904 '* home 416-691-9956 '* email jkeswick@interlog.com '* website www.interlog.com/~jkeswick '* '* If you require services, please call today. DEFSNG A-Z CONST xmin = -2 CONST xmax = 2 CONST ymin = -2 CONST ymax = 2 CONST xres = 10 CONST yres = 10 CONST u = 640 CONST v = 480 COMMON SHARED zx, zy DECLARE FUNCTION f! (x AS SINGLE, y AS SINGLE) DECLARE SUB Axis () DECLARE SUB Graph () DECLARE SUB Zvector (x!, y!) SCREEN 12 WINDOW (xmin, ymin)-(xmax, ymax) Axis Graph END SUB Axis LINE (-1 / SQR(2), -1 / SQR(2))-(1 / SQR(2), 1 / SQR(2)), 1 LINE (1, 0)-(-1, 0), 1 LINE (0, 1)-(0, 0), 1 END SUB FUNCTION f (x AS SINGLE, y AS SINGLE) IF (1 - x ^ 2 - y ^ 2) < 0 THEN f = 0 ELSE f = SQR(1 - x ^ 2 - y ^ 2) END IF END FUNCTION SUB Graph DEFSNG A-Z dx = (xmax - xmin) / u * xres dy = (ymax - ymin) / v * yres x = xmin DO WHILE x < xmax y = ymin DO WHILE y < ymax Zvector x, y CIRCLE (zx, zy), .001, 2 'plot point y = y + dy LOOP x = x + dx LOOP END SUB SUB Zvector (x, y) z = f(x, y) IF z <> 999 THEN ' map 3-d vector into 2-d if it exists zx = x * -1 / SQR(2) + y zy = x * -1 / SQR(2) + z ELSE zx = 999 zy = 999 END IF END SUB