getPos: 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 - "<sqf>([^↵][^\/]*↵[^\/]*)<\/sqf>" to "<sqf> $1 </sqf>") |
||
(22 intermediate revisions by 2 users not shown) | |||
Line 31: | Line 31: | ||
{{Feature|important| | {{Feature|important| | ||
Do '''not''' use this command to get an object's position in 3D format: | Do '''not''' use this command to get an object's position in 3D format: | ||
* the Z value from this command is '''relative''' to the surface underneath, and there is no compatible setter command to use it with;<br>the commonly misused code: | * the Z value from this command is '''relative''' to the surface underneath, and there is no compatible setter command to use it with;<br>the commonly misused code: <sqf inline>_obj1 setPos getPos _obj2</sqf> is '''absolutely wrong''' | ||
* this command is significantly '''slower''' than other [[:Category:Command Group: Positions|position commands]] because it has to calculate the surface below a position from objects in the (2D) area; its performance therefore suffers from areas with a high density of objects such as cities, and can easily be ~20x slower than other, simpler position commands - see [[Code Optimisation#getPos.2A and setPos.2A|this benchmark]]. | * this command is significantly '''slower''' than other [[:Category:Command Group: Positions|position commands]] because it has to calculate the surface below a position from objects in the (2D) area; its performance therefore suffers from areas with a high density of objects such as cities, and can easily be ~20x slower than other, simpler position commands - see [[Code Optimisation#getPos.2A and setPos.2A|this benchmark]]. | ||
The '''only''' correct usage of this command is to determine the altitude of an object '''from the surface below it''' (see {{ | The '''only''' correct usage of this command is to determine the altitude of an object '''from the surface below it''' (see {{Link|#Example 5}}). | ||
}} | }} | ||
Line 40: | Line 40: | ||
|p1= object: [[Object]] | |p1= object: [[Object]] | ||
|r1= [[Array]] format [[Position#PositionAGLS|PositionAGLS]] where Z is the height over the surface underneath | |r1= [[Array]] format [[Position#PositionAGLS|PositionAGLS]] - where Z is the height over the surface underneath | ||
|s2= [[getPos]] location | |s2= [[getPos]] location | ||
Line 46: | Line 46: | ||
|p21= location: [[Location]] | |p21= location: [[Location]] | ||
|r2= [[Array]] format [ | |r2= [[Array]] format [[Position#PositionAGL|PositionAGL]] - see [[locationPosition]] | ||
|s3= origin [[getPos]] [distance, heading] | |s3= origin [[getPos]] [distance, heading] | ||
Line 58: | Line 58: | ||
|p43= heading: [[Number]] - in which compass direction | |p43= heading: [[Number]] - in which compass direction | ||
|r3= [[Array]] | |r3= [[Array]] format [[Position#PositionAGL|PositionAGL]] | ||
|x1= <sqf>hintSilent str getPos player;</sqf> | |x1= <sqf>hintSilent str getPos player;</sqf> | ||
|x2= [[getPos]] vs. other methods (over sea). Pay attention to Z values: | |x2= [[getPos]] vs. other methods (over sea). Pay attention to Z values: | ||
< | <sqf> | ||
getPos ship; // [2412.01, 6036.33, -0.839965] | |||
getPosATL ship; // [2412.01, 6036.33, 19.4266] | |||
getPosASL ship; // [2412.01, 6036.33, -0.920066] | |||
getPosASLW ship; // [2412.01, 6036.33, -0.865981] | |||
visiblePosition ship; // [2412.02, 6036.33, -0.837952] | |||
visiblePositionASL ship; // [2412.02, 6036.33, -0.91798] | |||
position ship; // [2412.01, 6036.33, -0.839965] | |||
</sqf> | |||
|x3= [[getPos]] vs. other methods (over land, on top of a 100m high building). Pay attention to Z values: | |x3= [[getPos]] vs. other methods (over land, on top of a 100m high building). Pay attention to Z values: | ||
< | <sqf> | ||
getPos car; // [2508.64, 5681.47, 0.0609589] | |||
getPosATL car; // [2508.64, 5681.47, 100.0356369] | |||
getPosASL car; // [2508.64, 5681.47, 171.718] | |||
getPosASLW car; // [2508.64, 5681.47, 171.718] | |||
visiblePosition car; // [2508.64, 5681.47, 0.0609512] | |||
visiblePositionASL car; // [2508.64, 5681.47, 171.718] | |||
position car; // [2508.64, 5681.47, 0.0609589] | |||
</sqf> | |||
|x4= Find position 100 metres and 45 degrees from player position: | |x4= Find position 100 metres and 45 degrees from player position: | ||
< | <sqf>player getPos [100, 45];</sqf> | ||
|x5= Determine if a free-falling unit is close enough to the surface (including buildings, aircraft carriers etc) below to deploy the parachute: | |x5= Determine if a free-falling unit is close enough to the surface (including buildings, aircraft carriers etc) below to deploy the parachute: | ||
< | <sqf> | ||
waitUntil { sleep 1; getPos player select 2 < 200 }; | |||
hint "Deploying a parachute might be a good idea"; | |||
</sqf> | |||
|seealso= [[getPosVisual]] [[getRelPos]] [[setPos]] [[Position#setPosAGLS|setPosAGLS]] [[position]] [[getPosATL]] [[getPosASL]] [[getPosASLW]] [[visiblePosition]] [[visiblePositionASL]] [[getMarkerPos]] | |seealso= [[getPosVisual]] [[getRelPos]] [[setPos]] [[Position#setPosAGLS|setPosAGLS]] [[position]] [[getPosATL]] [[getPosASL]] [[getPosASLW]] [[visiblePosition]] [[visiblePositionASL]] [[getMarkerPos]] | ||
}} | }} | ||
{{Note | |||
|user= Dr_Eyeball | |||
|timestamp= 20070217134300 | |||
|text= <sqf inline>getPos obj select 2</sqf> might return the vertical position above ground level, but for a stacked object, it returns the vertical position above the object beneath it. The same problem existed for [[getPosASL]] ('''pre-Arma 2 games only'''). There was a {{Link|link= http://www.flashpoint1985.com/cgi-bin/ikonboard311/ikonboard.cgi?s=e587356595b907e91f96b8817d7f8a26;act=ST;f=71;t=57918|text= discussion}} thread in the BIS forums which suggested the use of the command [[modelToWorld]] instead to get around this issue where an absolute vertical position is required. ArmA Ver '''1.02'''. | |||
}} | |||
< | |||
might return the vertical position above ground level, but for a stacked object, it returns the vertical position above the object beneath it. The same problem existed for [[getPosASL]] ('''pre-Arma 2 games only'''). There was a {{ | |||
Latest revision as of 11:34, 3 September 2024
Description
- Description:
- Returns object or location position. If the argument is an object, the return value is in format PositionAGLS.
The alternative syntax gets the position given distance and heading away from provided object or position - the command equivalent of BIS_fnc_relPos. - Groups:
- Positions
Syntax 1
- Syntax:
- getPos object
- Parameters:
- object: Object
- Return Value:
- Array format PositionAGLS - where Z is the height over the surface underneath
Syntax 2
- Syntax:
- getPos location
- Parameters:
- location: Location
- Return Value:
- Array format PositionAGL - see locationPosition
Syntax 3
- Syntax:
- origin getPos [distance, heading]
- Parameters:
- origin: Object, Position2D or Position3D
- distance: Number - distance from position
- heading: Number - in which compass direction
- Return Value:
- Array format PositionAGL
Examples
- Example 1:
- Example 2:
- getPos vs. other methods (over sea). Pay attention to Z values:
getPos ship; // [2412.01, 6036.33, -0.839965] getPosATL ship; // [2412.01, 6036.33, 19.4266] getPosASL ship; // [2412.01, 6036.33, -0.920066] getPosASLW ship; // [2412.01, 6036.33, -0.865981] visiblePosition ship; // [2412.02, 6036.33, -0.837952] visiblePositionASL ship; // [2412.02, 6036.33, -0.91798] position ship; // [2412.01, 6036.33, -0.839965]
- Example 3:
- getPos vs. other methods (over land, on top of a 100m high building). Pay attention to Z values:
getPos car; // [2508.64, 5681.47, 0.0609589] getPosATL car; // [2508.64, 5681.47, 100.0356369] getPosASL car; // [2508.64, 5681.47, 171.718] getPosASLW car; // [2508.64, 5681.47, 171.718] visiblePosition car; // [2508.64, 5681.47, 0.0609512] visiblePositionASL car; // [2508.64, 5681.47, 171.718] position car; // [2508.64, 5681.47, 0.0609589]
- Example 4:
- Find position 100 metres and 45 degrees from player position:
- Example 5:
- Determine if a free-falling unit is close enough to the surface (including buildings, aircraft carriers etc) below to deploy the parachute:
Additional Information
- See also:
- getPosVisual getRelPos setPos setPosAGLS position getPosATL getPosASL getPosASLW visiblePosition visiblePositionASL getMarkerPos
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
- Posted on Feb 17, 2007 - 13:43 (UTC)
- getPos obj select 2 might return the vertical position above ground level, but for a stacked object, it returns the vertical position above the object beneath it. The same problem existed for getPosASL (pre-Arma 2 games only). There was a discussion (dead link) thread in the BIS forums which suggested the use of the command modelToWorld instead to get around this issue where an absolute vertical position is required. ArmA Ver 1.02.
Categories:
- Scripting Commands
- Introduced with Operation Flashpoint version 1.00
- Operation Flashpoint: New Scripting Commands
- Operation Flashpoint: Scripting Commands
- Operation Flashpoint: Elite: Scripting Commands
- ArmA: Armed Assault: Scripting Commands
- Arma 2: Scripting Commands
- Arma 2: Operation Arrowhead: Scripting Commands
- Take On Helicopters: Scripting Commands
- Arma 3: Scripting Commands
- Command Group: Positions