mobilebasic/math/maplib.bas

26 lines
988 B
QBasic
Raw Permalink Normal View History

2021-03-29 19:43:07 +03:00
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