{"name":"linearConversion","title":"linearConversion","type":"command","url":"https://community.bistudio.com/wiki/linearConversion","revid":364172,"updated":"2024-05-05T10:46:44Z","groups":["Math"],"status":"ok","games":{"arma3":"0.50"},"since":"arma3 0.50","arma3_since":"0.50","description":"Converts given value from given \"from\" range to wanted \"to\" range. If clipping is set to true, the resulting value is guaranteed to be within \"to\" range no matter what.\n\n> [!NOTE]\n> **Arma 3:** Faster alternative to BIS_fnc_linearConversion.","syntaxes":[{"syntax":"linearConversion [minFrom, maxFrom, value, minTo, maxTo, clip]","params":[{"name":"minFrom","type":"Number","description":"start \"from\" range","type_expr":"Number"},{"name":"maxFrom","type":"Number","description":"end \"from\" range","type_expr":"Number"},{"name":"value","type":"Number","description":"given value from \"from\" range","type_expr":"Number"},{"name":"minTo","type":"Number","description":"start \"to\" range","type_expr":"Number"},{"name":"maxTo","type":"Number","description":"end \"to\" range","type_expr":"Number"},{"name":"clip","type":"Boolean","optional":true,"default":"false","description":"if true, resulting value cannot leave \"to\" range","type_expr":"Boolean","text":"clip: Boolean - (Optional, default false) if true, resulting value cannot leave \"to\" range"}],"returns":{"type":"Number","type_expr":"Number","description":"respectful value from \"to\" range"},"form":"unary","right":{"text":"[minFrom, maxFrom, value, minTo, maxTo, clip]"}}],"examples":[{"code":["// Say given range is 0 to 1 and wanted range is 0 to 100 (percent calculation). Given value 0.55 then will be 55\nlinearConversion [0, 1, 0.55, 0, 100];\n\n// but if given value is 1.1 it will return 110\nlinearConversion [0, 1, 1.1, 0, 100, false];\n\n// or if clipping is true it will return 100\nlinearConversion [0, 1, 1.1, 0, 100, true];"]},{"code":["linearConversion [4, 8, 5, 0, 1, false];"]},{"text":"```sqf\n// Calculate days from 1/1/1970\nfnc_daysFromEpoc =\n{\n    private _year = param [0];\n    private _days = 0;\n    for \"_i\" from 1970 to _year - 1 do\n    {\n        _days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false];\n    };\n    _days + linearConversion [0, 1, dateToNumber _this, 0, 365, false];\n};\n\nhint str (date call fnc_daysFromEpoc);\n```","code":["// Calculate days from 1/1/1970\nfnc_daysFromEpoc = \n{\n\tprivate _year = param [0];\n\tprivate _days = 0;\n\tfor \"_i\" from 1970 to _year - 1 do \n\t{\n\t\t_days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false];\n\t};\n\t_days + linearConversion [0, 1, dateToNumber _this, 0, 365, false];\n};\n\nhint str (date call fnc_daysFromEpoc);"]}],"see_also":["round","floor","ceil","vectorLinearConversion","bezierInterpolation"]}