distanceSqr: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " \| *(game[0-9]|version[0-9]|gr[0-9]|serverExec|mp|pr|descr|s[0-9]|p[0-9]{1,3}|r[0-9]|x1?[0-9]|seealso) *= +" to " |$1= ")
m (2.16 -> 2.18)
 
(21 intermediate revisions by 2 users not shown)
Line 6: Line 6:
|gr1= Math - Geometry
|gr1= Math - Geometry


|descr= Computes the {{Wikipedia|Euclidean_distance#Squared_Euclidean_distance|squared distance}} between two objects or positions.
|descr= Computes the {{Link|https://en.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance|squared distance}} between two objects or positions.
This command is faster than {{Link|distance}} by saving a {{Link|sqrt|square root}} operation, useful for mass-checking distance without the need of the distance value itself.


|s1= var1 '''distanceSqr''' var2
|s1= var1 [[distanceSqr]] var2


|p1= var1: [[Object]] or [[Position]]
|p1= var1: [[Object]] or [[Position]]
Line 14: Line 15:
|p2= var2: [[Object]] or [[Position]]
|p2= var2: [[Object]] or [[Position]]


|r1=[[Number]] Distance in meters or 1e10 if distance cannot be calculated
|r1= [[Number]] - distance in meters or 1e10 if distance cannot be calculated


|x1= <code>[[player]] [[distanceSqr]] ([[leader]] [[player]])</code>
|s2= a [[distanceSqr]] b


|x2= <code>_distance = [[sqrt]] ((x2 - x1) ^ 2 + (y2 - y1) ^ 2 + (z2 - z1) ^ 2);
|s2since= arma3 2.18
_distanceSqr = (x2 - x1) ^ 2 + (y2 - y1) ^ 2 + (z2 - z1) ^ 2;
_distance = [x1, y1, z1] [[distance]] [x2, y2, z2];
_distanceSqr = [x1, y1, z1] [[distanceSqr]] [x2, y2, z2];
_distance = [[sqrt]] ([x1, y1, z1] [[distanceSqr]] [x2, y2, z2]);
_distanceSqr = ([x1, y1, z1] [[distance]] [x2, y2, z2]) ^ 2;</code>


|p21= a: [[Number]]
|p22= b: [[Number]]
|r2= [[Number]] - distance c calculated as <sqf inline>c = a * a + b * b</sqf>
|x1= <sqf>
private _distanceSquared = 5 * 5;
if (player distanceSqr leader player < _distanceSquared) then // similar to player distance leader player < 5
{
hint "You are less than 5m from the leader!";
};
</sqf>
|x2= <sqf>
private _distance = sqrt ((x2 - x1) ^ 2 + (y2 - y1) ^ 2 + (z2 - z1) ^ 2);
private _distanceSqr = (x2 - x1) ^ 2 + (y2 - y1) ^ 2 + (z2 - z1) ^ 2;
_distance = [x1, y1, z1] distance [x2, y2, z2];
_distanceSqr = [x1, y1, z1] distanceSqr [x2, y2, z2];
_distance = sqrt ([x1, y1, z1] distanceSqr [x2, y2, z2]);
_distanceSqr = ([x1, y1, z1] distance [x2, y2, z2]) ^ 2;
</sqf>
<!-- KK, your turn!
If normal distance is calculated according to this formula:
If normal distance is calculated according to this formula:


squared distance is calculated according to this formula:   
squared distance is calculated according to this formula:   
-->


[[distanceSqr]] <nowiki>=</nowiki>
|seealso= [[distance]] [[vectorDistanceSqr]] [[distance2D]]
 
|seealso= [[distance]], [[vectorDistanceSqr]], [[distance2D]]
}}
}}

Latest revision as of 15:07, 8 February 2024

Hover & click on the images for description

Description

Description:
Computes the squared distance between two objects or positions. This command is faster than distance by saving a square root operation, useful for mass-checking distance without the need of the distance value itself.
Groups:
Math - Geometry

Syntax

Syntax:
var1 distanceSqr var2
Parameters:
var1: Object or Position
var2: Object or Position
Return Value:
Number - distance in meters or 1e10 if distance cannot be calculated

Alternative Syntax

Syntax:
a distanceSqr b
Parameters:
a: Number
b: Number
Return Value:
Number - distance c calculated as c = a * a + b * b

Examples

Example 1:
private _distanceSquared = 5 * 5; if (player distanceSqr leader player < _distanceSquared) then // similar to player distance leader player < 5 { hint "You are less than 5m from the leader!"; };
Example 2:
private _distance = sqrt ((x2 - x1) ^ 2 + (y2 - y1) ^ 2 + (z2 - z1) ^ 2); private _distanceSqr = (x2 - x1) ^ 2 + (y2 - y1) ^ 2 + (z2 - z1) ^ 2; _distance = [x1, y1, z1] distance [x2, y2, z2]; _distanceSqr = [x1, y1, z1] distanceSqr [x2, y2, z2]; _distance = sqrt ([x1, y1, z1] distanceSqr [x2, y2, z2]); _distanceSqr = ([x1, y1, z1] distance [x2, y2, z2]) ^ 2;

Additional Information

See also:
distance vectorDistanceSqr distance2D

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