mobilebasic/Examples/Graphics/crossplot.bas

87 lines
No EOL
1.7 KiB
QBasic

SUB CROSSPLOT(NP AS INTEGER, XARRAY(1) AS DOUBLE, YARRAY(1) AS DOUBLE)
DIM LEFT, RIGHT, TOP, BOTTOM AS INTEGER
DIM NX, NY AS INTEGER
DIM W, H AS INTEGER
DIM XDELTA, YDELTA AS DOUBLE
DIM XPOS, YPOS AS DOUBLE
DIM I AS INTEGER
DIM S AS STRING
DIM BORDER AS INTEGER
BORDER = 40
TOP = BORDER
BOTTOM = SCREENHEIGHT() - BORDER * 2
LEFT = BORDER
RIGHT = SCREENWIDTH() - BORDER * 2
SETCOLOR 0,0,0
CLS
SETCOLOR 255,255,0
NX = 10
NY = 10
XDELTA = DOUBLE(RIGHT - LEFT) / DOUBLE(NX)
YDElTA = DOUBLE(BOTTOM - TOP) / DOUBLE(NY)
FOR I=0 TO NX
XPOS = DOUBLE(LEFT) + DOUBLE(I) * XDELTA
DRAWLINE XPOS, TOP, XPOS, BOTTOM
END FOR
FOR I=0 TO NY
YPOS = DOUBLE(TOP) + DOUBLE(I) * YDELTA
DRAWLINE LEFT, YPOS, RIGHT, YPOS
END FOR
S = "0.0"
W = STRINGWIDTH(S)+1
H = STRINGHEIGHT(S)+1
DRAWSTRING S,LEFT-W,BOTTOM
DRAWSTRING S,LEFT,BOTTOM+H
S = "1.0"
W = STRINGWIDTH(S)+1
H = STRINGHEIGHT(S)+1
DRAWSTRING S,LEFT-W,TOP+H
DRAWSTRING S,RIGHT-W,BOTTOM+H
S = "Y-Axis"
W = STRINGWIDTH(S)+1
H = STRINGHEIGHT(S)+1
DRAWSTRING S,LEFT-W,TOP+(BOTTOM-TOP-H)/2
S = "X-Axis"
W = STRINGWIDTH(S)+1
H = STRINGHEIGHT(S)+1
DRAWSTRING S,LEFT+(RIGHT-LEFT-W)/2,BOTTOM+H
SETCOLOR 255,255,255
FOR I=1 TO NP
XPOS = DOUBLE(LEFT) + XARRAY(I) * DOUBLE(RIGHT - LEFT)
YPOS = DOUBLE(TOP) + YARRAY(I) * DOUBLE(BOTTOM - TOP)
PLOT XPOS, YPOS
END FOR
END SUB
SUB MAIN
DIM XARRAY(500), YARRAY(500) AS DOUBLE
DIM NP AS INTEGER
DIM I AS INTEGER
NP = 500
FOR I=1 TO NP
XARRAY(I) = RND(0.0)
YARRAY(I) = RND(0.0)
END FOR
GRAPHICS
CALL CROSSPLOT(NP, XARRAY, YARRAY)
REPAINT
SLEEP 5000
END SUB