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