{"name":"linearConversion","operator":null,"title":"linearConversion","type":"command","url":"https://community.bistudio.com/wiki/linearConversion","revid":364172,"updated":"2024-05-05T10:46:44Z","groups":["Math"],"status":"ok","replaced_by":[],"games":[{"game":"arma3","name":"Arma 3","version":"0.50"}],"since":{"game":"arma3","name":"Arma 3","version":"0.50"},"arma3_since":"0.50","branch":null,"locality":{"argument":null,"effect":null,"server_exec":false},"exec":null,"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]","since":null,"effect":null,"exec":null,"params":[{"name":"minFrom","type":"Number","optional":false,"default":null,"description":"start \"from\" range","types":["Number"],"since":null,"text":"minFrom: Number - start \"from\" range"},{"name":"maxFrom","type":"Number","optional":false,"default":null,"description":"end \"from\" range","types":["Number"],"since":null,"text":"maxFrom: Number - end \"from\" range"},{"name":"value","type":"Number","optional":false,"default":null,"description":"given value from \"from\" range","types":["Number"],"since":null,"text":"value: Number - given value from \"from\" range"},{"name":"minTo","type":"Number","optional":false,"default":null,"description":"start \"to\" range","types":["Number"],"since":null,"text":"minTo: Number - start \"to\" range"},{"name":"maxTo","type":"Number","optional":false,"default":null,"description":"end \"to\" range","types":["Number"],"since":null,"text":"maxTo: Number - end \"to\" range"},{"name":"clip","type":"Boolean","optional":true,"default":"false","description":"if true, resulting value cannot leave \"to\" range","types":["Boolean"],"since":null,"text":"clip: Boolean - (Optional, default false) if true, resulting value cannot leave \"to\" range"}],"returns":{"type":"Number","types":["Number"],"description":"respectful value from \"to\" range","text":"Number - respectful value from \"to\" range"},"form":"unary","operator":null,"left":null,"right":{"text":"[minFrom, maxFrom, value, minTo, maxTo, clip]","types":["Array"]}}],"examples":[{"text":"```sqf\n// 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];\n```","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];"]},{"text":"```sqf\nlinearConversion [4, 8, 5, 0, 1, false];\n```","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);"]}],"multiplayer":null,"problems":null,"aliases":[],"see_also":["round","floor","ceil","vectorLinearConversion","bezierInterpolation"],"notes":[],"categories":["Arma 3: New Scripting Commands","Arma 3: Scripting Commands","Command Group: Math","Introduced with Arma 3 version 0.50","Scripting Commands"]}