linearConversion: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<code>([^ ]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^ ]*)<\/code>" to "<code>$1$2$3</code>")
m (Text replacement - "\] +\[" to "] [")
 
(23 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]] [minFrom, maxFrom, value, minTo, maxTo, clip]
|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]] - end "to" range
|p5= maxTo: [[Number]] - end "to" range


|p6= clip (Optional, default [[false]]): [[Boolean]] - if [[true]], resulting value cannot leave "to" range
|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= <code>{{cc|Say given range is 0 to 1 and wanted range is 0 to 100 (percent calculation). Given value 0.55 then will be 55}}
|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
{{cc|but if given value is 1.1 it will return 110}}
linearConversion [0, 1, 0.55, 0, 100];
[[linearConversion]] [0,1,1.1,0,100,[[false]]];
{{cc|or if clipping is [[true]] it will return 100}}
[[linearConversion]] [0,1,1.1,0,100,[[true]]];</code>


|x2= <code>linearConversion [4, 8, 5, 0, 1, [[false]]<nowiki>]</nowiki>;</code>
// but if given value is 1.1 it will return 110
linearConversion [0, 1, 1.1, 0, 100, false];


|x3= <code>{{cc|Calculate days from 1/1/1970}}
// or if clipping is true it will return 100
linearConversion [0, 1, 1.1, 0, 100, true];
</sqf>
 
|x2= <sqf>linearConversion [4, 8, 5, 0, 1, false];</sqf>
 
|x3= <sqf>
// Calculate days from 1/1/1970
fnc_daysFromEpoc =  
fnc_daysFromEpoc =  
{
{
[[private]] _year = [[param]] [0];
private _year = param [0];
[[private]] _days = 0;
private _days = 0;
[[for]] "_i" [[from]] 1970 [[to]] _year - 1 [[do]]
for "_i" from 1970 to _year - 1 do  
{
{
_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 + [[linearConversion]] [0, 1, [[dateToNumber]] _this, 0, 365, [[false]]];
_days + linearConversion [0, 1, dateToNumber _this, 0, 365, false];
};
};


[[hint]] [[str]] ([[date]] [[call]] fnc_daysFromEpoc);</code>
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

Hover & click on the images for description

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.
Arma 3
Faster alternative to BIS_fnc_linearConversion.
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:
linearConversion [4, 8, 5, 0, 1, false];
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