87 lines
No EOL
1.7 KiB
QBasic
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 |