linearConversion: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "<code>([^<]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^<]*) *<\/code>" to "<code>$1$2$3</code>") |
Lou Montana (talk | contribs) m (Text replacement - "\] +\[" to "] [") |
||
(6 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
|descr= 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. {{Feature|arma3|Faster alternative to [[BIS_fnc_linearConversion]].}} | |descr= 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. {{Feature|arma3|Faster alternative to [[BIS_fnc_linearConversion]].}} | ||
|s1= [[linearConversion]] | |s1= [[linearConversion]] [minFrom, maxFrom, value, minTo, maxTo, clip] | ||
|p1= minFrom: [[Number]] - start "from" range | |p1= minFrom: [[Number]] - start "from" range | ||
Line 18: | Line 18: | ||
|p4= minTo: [[Number]] - start "to" range | |p4= minTo: [[Number]] - start "to" range | ||
|p5= maxTo: [[Number]] | |p5= maxTo: [[Number]] - end "to" range | ||
|p6= clip (Optional, default [[false]]) | |p6= clip: [[Boolean]] - (Optional, default [[false]]) if [[true]], resulting value cannot leave "to" range | ||
|r1= [[Number]] - respectful value from "to" range | |r1= [[Number]] - respectful value from "to" range | ||
|x1= < | |x1= <sqf> | ||
linearConversion [0,1,0.55,0,100]; | // Say given range is 0 to 1 and wanted range is 0 to 100 (percent calculation). Given value 0.55 then will be 55 | ||
linearConversion [0, 1, 0.55, 0, 100]; | |||
// but if given value is 1.1 it will return 110 | // but if given value is 1.1 it will return 110 | ||
linearConversion [0,1,1.1,0,100,false]; | linearConversion [0, 1, 1.1, 0, 100, false]; | ||
// or if clipping is true it will return 100 | // or if clipping is true it will return 100 | ||
linearConversion [0,1,1.1,0,100,true];</ | linearConversion [0, 1, 1.1, 0, 100, true]; | ||
</sqf> | |||
|x2= < | |x2= <sqf>linearConversion [4, 8, 5, 0, 1, false];</sqf> | ||
|x3= < | |x3= <sqf> | ||
// Calculate days from 1/1/1970 | |||
fnc_daysFromEpoc = | fnc_daysFromEpoc = | ||
{ | { | ||
Line 42: | Line 47: | ||
_days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false]; | _days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false]; | ||
}; | }; | ||
_days + | _days + linearConversion [0, 1, dateToNumber _this, 0, 365, false]; | ||
}; | }; | ||
hint str (date call fnc_daysFromEpoc);</ | hint str (date call fnc_daysFromEpoc); | ||
</sqf> | |||
|seealso= [[round]] [[floor]] [[ceil]] [[vectorLinearConversion]] [[bezierInterpolation]] | |seealso= [[round]] [[floor]] [[ceil]] [[vectorLinearConversion]] [[bezierInterpolation]] | ||
}} | }} |
Latest revision as of 11:46, 5 May 2024
Description
- 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.
- Groups:
- Math
Syntax
- Syntax:
- linearConversion [minFrom, maxFrom, value, minTo, maxTo, clip]
- Parameters:
- minFrom: Number - start "from" range
- maxFrom: Number - end "from" range
- value: Number - given value from "from" range
- minTo: Number - start "to" range
- maxTo: Number - end "to" range
- clip: Boolean - (Optional, default false) if true, resulting value cannot leave "to" range
- Return Value:
- Number - respectful value from "to" range
Examples
- Example 1:
- // Say given range is 0 to 1 and wanted range is 0 to 100 (percent calculation). Given value 0.55 then will be 55 linearConversion [0, 1, 0.55, 0, 100]; // but if given value is 1.1 it will return 110 linearConversion [0, 1, 1.1, 0, 100, false]; // or if clipping is true it will return 100 linearConversion [0, 1, 1.1, 0, 100, true];
- Example 2:
- Example 3:
- // Calculate days from 1/1/1970 fnc_daysFromEpoc = { private _year = param [0]; private _days = 0; for "_i" from 1970 to _year - 1 do { _days = _days + round linearConversion [0, 1, dateToNumber [_i, 12, 31, 23, 59], 0, 365, false]; }; _days + linearConversion [0, 1, dateToNumber _this, 0, 365, false]; }; hint str (date call fnc_daysFromEpoc);
Additional Information
- See also:
- round floor ceil vectorLinearConversion bezierInterpolation
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note