'=========================================================================== ' Subject: FUNCTION GRAPHING PROGRAM Date: 08-29-00 (21:15) ' Author: Tomer Filiba Code: QB, QBasic, PDS ' Origin: flexibal@n2.com Packet: MISC.ABC '=========================================================================== ' ' GRAPHITE's GùRùAùPùHùiùt '===---===---===---===---===---=== ' ' -Product: Graphite's GraphùIt ' -Category: Math, Graphing ' -Version: 0.3 B ' -Produced by: Graphite Technologies (http://www.graphite-tech.com) ' -Programmer: Tomer Filiba (flexibal@n2.com) ' -Contact: contact@graphite-tech.com ' -Platform: DOS 5.0 & later, All QB versions ' ' '============================================================================ DECLARE SUB DrawGrid (X%, Y%) '$DYNAMIC DEFINT A-Z CONST True = -1, False = -1 CONST Pi = 3.1416 TYPE GraphType XSize AS INTEGER YSize AS INTEGER XJump AS SINGLE YJump AS SINGLE Steps AS SINGLE ScreenX AS INTEGER ScreenY AS INTEGER XOff AS INTEGER YOff AS INTEGER GridColor AS INTEGER GraphColor AS INTEGER GraphWidth AS INTEGER AxisColor AS INTEGER AxisWidth AS INTEGER BackColor AS INTEGER END TYPE COMMON SHARED Graph AS GraphType ON ERROR GOTO IfError SCREEN 12 Graph.Steps = .01 Graph.GraphColor = 14 Graph.GraphWidth = 2 Graph.AxisColor = 3 Graph.AxisWidth = 1 Graph.GridColor = 9 Graph.BackColor = 1 Graph.ScreenX = 640 Graph.ScreenY = 480 Graph.XOff = 0 Graph.YOff = 0 PAINT (0, 0), 15 DrawGrid 20, 15 FOR X! = -Graph.XSize TO Graph.XSize STEP Graph.Steps oopX = pX oopY = pY Y! = COS(-X!) '<===== Function f(x) pX = (Graph.ScreenX / 2) + (X! * Graph.XJump) pY = (Graph.ScreenY / 2) + (-Y! * Graph.YJump) IF X! = -Graph.XSize THEN opX = pX: opY = pY IF pX >= 0 AND pY >= 0 AND pX <= Graph.ScreenX - 1 AND pY <= Graph.ScreenY - 1 THEN opX = oopX opY = oopY FOR n = 0 TO Graph.GraphWidth - 1 LINE (Graph.XOff + opX, Graph.YOff + opY + n)-(Graph.XOff + pX + n, Graph.YOff + pY + n), Graph.GraphColor NEXT n END IF IF INKEY$ <> "" THEN EXIT FOR NEXT X! SLEEP END IfError: RESUME NEXT REM $STATIC SUB DrawGrid (X, Y) Graph.XSize = X Graph.YSize = Y XJ = (Graph.ScreenX / 2) / X YJ = (Graph.ScreenY / 2) / Y IF XJ < 2 THEN XJ = 2: Graph.XSize = (Graph.ScreenX / 2) * XJ IF YJ < 2 THEN YJ = 2: Graph.YSize = (Graph.ScreenY / 2) * YJ Graph.XJump = ((Graph.ScreenX / 2) / Graph.XSize) Graph.YJump = ((Graph.ScreenY / 2) / Graph.YSize) gc = Graph.GridColor ac = Graph.AxisColor aw = Graph.AxisWidth LINE (Graph.XOff, Graph.YOff)-(Graph.XOff + Graph.ScreenX, Graph.YOff + Graph.ScreenY), Graph.BackColor, BF FOR i = -(Graph.ScreenX / 2) TO (Graph.ScreenX / 2) STEP XJ LINE (Graph.XOff + (Graph.ScreenX / 2) + i, Graph.YOff)-(Graph.XOff + (Graph.ScreenX / 2) + i, Graph.YOff + Graph.ScreenY - 1), gc NEXT i FOR i = -(Graph.ScreenY / 2) TO (Graph.ScreenY / 2) STEP YJ LINE (Graph.XOff, Graph.YOff + (Graph.ScreenY / 2) + i)-(Graph.XOff + Graph.ScreenX - 1, Graph.YOff + (Graph.ScreenY / 2) + i), gc NEXT i LINE (Graph.XOff, Graph.YOff + (Graph.ScreenY / 2) - aw)-(Graph.XOff + Graph.ScreenX, Graph.YOff + (Graph.ScreenY / 2) + aw), ac, BF LINE (Graph.XOff + (Graph.ScreenX / 2) - aw, Graph.YOff)-(Graph.XOff + (Graph.ScreenX / 2) + aw, Graph.YOff + Graph.ScreenY), ac, BF END SUB