25 lines
988 B
QBasic
25 lines
988 B
QBasic
FUNCTION CONSTRAINT(N AS DOUBLE, MINVAL AS DOUBLE, MAXVAL AS DOUBLE) AS DOUBLE
|
|
IF N < MINVAL THEN
|
|
CONSTRAINT=MINVAL
|
|
ELSEIF N > MAXVAL THEN
|
|
CONSTRAINT=MAXVAL
|
|
ELSE
|
|
CONSTRAINT=N
|
|
END IF
|
|
END FUNCTION
|
|
FUNCTION CONSTRAINTINT(N AS INTEGER, MINVAL AS INTEGER, MAXVAL AS INTEGER) AS VARIANT
|
|
CONSTRAINTINT=CONSTRAINT(DOUBLE(N),DOUBLE(MINVAL),DOUBLE(MAXVAL))
|
|
END FUNCTION
|
|
FUNCTION MAP(N AS DOUBLE, MINVALIN AS DOUBLE, MAXVALIN AS DOUBLE, MINVALOUT AS DOUBLE, MAXVALOUT AS DOUBLE, CONSTR AS BOOLEAN) AS DOUBLE
|
|
DIM CONV AS DOUBLE
|
|
REM CONV=N/(MAXVALIN/MAXVALOUT)
|
|
CONV=(N-MINVALIN)*(MAXVALOUT-MINVALOUT)/(MAXVALIN-MINVALIN)+MINVALOUT
|
|
IF CONSTR THEN
|
|
MAP=CONSTRAINT(CONV,MINVALOUT,MAXVALOUT)
|
|
ELSE
|
|
MAP=CONV
|
|
END IF
|
|
END FUNCTION
|
|
FUNCTION MAPINT(N AS INTEGER, MINVALIN AS INTEGER, MAXVALIN AS INTEGER, MINVALOUT AS INTEGER, MAXVALOUT AS INTEGER, CONSTR AS BOOLEAN) AS VARIANT
|
|
MAPINT=MAP(DOUBLE(N),DOUBLE(MINVALIN),DOUBLE(MAXVALIN),DOUBLE(MINVALOUT),DOUBLE(MAXVALOUT),CONSTR)
|
|
END FUNCTION
|