lineIntersects: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "[[Category:Scripting_Commands_Take_On_Helicopters" to "[[Category:Scripting Commands Take On Helicopters")
(Add game version for alternative syntax to description. Minor typo corrections. Reordered see also commands to be grouped and consistent across lineIntersects pages)
 
(56 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Command|Comments=
{{RV|type=command
____________________________________________________________________________________________


| arma2oa |Game name=
|game1= arma2oa
|1.62|Game version=
|version1= 1.62
|arg= global|Multiplayer Arguments=
____________________________________________________________________________________________


| Checks for object intersection with a virtual line between two positions. Returns true if intersects with an object.
|game2= tkoh
|version2= 1.00


<br><br>'''NOTE:''' Doesn't work under water. Max harcoded distance is 1000m.|DESCRIPTION=
|game3= arma3
____________________________________________________________________________________________
|version3= 0.50


| '''lineIntersects''' [begPos, endPos, objIgnore1, objIgnore2] |SYNTAX=
|arg= global
|p1=[begPos, endPos, objIgnore1, objIgnore2]: [[Array]] |PARAMETER1=
|p2= begPos: [[PositionASL]] |PARAMETER2=
|p3= endPos: [[PositionASL]] |PARAMETER3=
|p4= objIgnore1: (optional) [[Object]] - object to ignore. When testing intersection from an object/unit/vehicle, pass that object here to prevent intersection inside of the object.|PARAMETER4=
|p5= objIgnore2: (optional) [[Object]] - another object to ignore. When testing intersection of a line between two objects, pass the second object here to prevent interesection inside of it being reported|PARAMETER5=


| [[Boolean]] - true if intersection |RETURNVALUE=
|gr1= Math - Geometry
____________________________________________________________________________________________
 
|x1= <code>[[lineIntersects]] [ [[eyePos]] [[player]], [[aimPos]] chopper, [[player]], chopper]</code> |EXAMPLE1=
____________________________________________________________________________________________


| [[lineIntersectsSurfaces]], [[intersect]], [[terrainIntersect]], [[terrainIntersectASL]], [[terrainIntersectAtASL]], [[lineIntersectsWith]], [[lineIntersectsObjs]], [[cursorObject]], [[cursorTarget]], [[checkVisibility]] |SEEALSO=
|descr= Checks for object intersection with a virtual line between two positions. Since {{GVI|arma3|2.20|size= 0.75}}, there is an alternative syntax that does multiple checks at once, faster than multiple calls.
{{Feature|informative|
* Does not work under water.
* Max hardcoded distance is 1000m.
}}
 
|s1= [[lineIntersects]] [begPos, endPos, objIgnore1, objIgnore2]
 
|p1= begPos: [[Array]] format [[Position#PositionASL|PositionASL]]
 
|p2= endPos: [[Array]] format [[Position#PositionASL|PositionASL]]
 
|p3= objIgnore1: [[Object]] - (Optional, default [[objNull]]) object to ignore. When testing intersections from an object/unit/vehicle, pass that object here to prevent intersections inside of the object
 
|p4= objIgnore2: [[Object]] - (Optional, default [[objNull]]) another object to ignore. When testing intersections of a line between two objects, pass the second object here to prevent intersections inside of it being reported
 
|r1= [[Boolean]] - [[true]] if an intersection happens with an object (not with terrain)
 
|s2= [[lineIntersects]] [element1, element2, ...]
 
|s2since= arma3 2.20


}}
|p21= elementN: [[Array]] format [begPos, endPos, objIgnore1, objIgnore2]:
* begPos: [[Array]] format [[Position#PositionASL|PositionASL]]
* endPos: [[Array]] format [[Position#PositionASL|PositionASL]]
* objIgnore1: [[Object]] - (Optional, default [[objNull]]) object to ignore. When testing intersections from an object/unit/vehicle, pass that object here to prevent intersections inside of the object
* objIgnore2: [[Object]] - (Optional, default [[objNull]]) another object to ignore. When testing intersections of a line between two objects, pass the second object here to prevent intersections inside of it being reported


<h3 style="display:none">Notes</h3>
|r2= [[Array]] format [result1, result2, ...] - [[true]] if an intersection happens with an object (not with terrain) for the Nth element
<dl class="command_description">
<!-- Note Section BEGIN -->


<dd class="notedate">Posted on may 31, 2012 - 10:46 (CEST)
|x1= <sqf>private _hasStraightLineToChopper = lineIntersects [eyePos player, aimPos chopper, player, chopper];</sqf>
<dt class="note">'''[[User:Lou Montana|Lou Montana]]'''
<dd class="note">Please note the difference :
*[[terrainIntersect]]
*[[terrainIntersectASL]]
*[[lineIntersects]]
*[[lineIntersectsWith]]
*[[lineIntersectsObjs]]
*[[intersect]]


<!-- Note Section END -->
|x2= Alternative syntax to check intersections in parallel:
</dl>
<sqf>
private _enemies = units opfor;
private _enemyDataArray = _enemies apply { [eyePos player, aimPos _x, player, _x] };
private _result = lineIntersects _enemyDataArray;
</sqf>


<h3 style="display:none">Bottom Section</h3>
|seealso= [[lineIntersectsSurfaces]] [[lineIntersectsObjs]] [[lineIntersectsWith]] [[terrainIntersect]] [[terrainIntersectASL]] [[terrainIntersectAtASL]] [[intersect]] [[cursorObject]] [[cursorTarget]] [[checkVisibility]]
}}


[[Category:Arma 2: Operation Arrowhead: New Scripting Commands List|{{uc:{{PAGENAME}}}}]]
{{Note
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
|user= Lou Montana
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
|timestamp= 20120531104600
[[Category:Scripting Commands Take On Helicopters|{{uc:{{PAGENAME}}}}]]
|text= Please note the difference:
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
* [[terrainIntersect]]
* [[terrainIntersectASL]]
* [[lineIntersects]]
* [[lineIntersectsWith]]
* [[lineIntersectsObjs]]  
* [[intersect]]
}}

Latest revision as of 02:03, 1 December 2024

Hover & click on the images for description

Description

Description:
Checks for object intersection with a virtual line between two positions. Since Arma 3 logo black.png2.20, there is an alternative syntax that does multiple checks at once, faster than multiple calls.
  • Does not work under water.
  • Max hardcoded distance is 1000m.
Groups:
Math - Geometry

Syntax

Syntax:
lineIntersects [begPos, endPos, objIgnore1, objIgnore2]
Parameters:
begPos: Array format PositionASL
endPos: Array format PositionASL
objIgnore1: Object - (Optional, default objNull) object to ignore. When testing intersections from an object/unit/vehicle, pass that object here to prevent intersections inside of the object
objIgnore2: Object - (Optional, default objNull) another object to ignore. When testing intersections of a line between two objects, pass the second object here to prevent intersections inside of it being reported
Return Value:
Boolean - true if an intersection happens with an object (not with terrain)

Alternative Syntax

Syntax:
lineIntersects [element1, element2, ...]
Parameters:
elementN: Array format [begPos, endPos, objIgnore1, objIgnore2]:
  • begPos: Array format PositionASL
  • endPos: Array format PositionASL
  • objIgnore1: Object - (Optional, default objNull) object to ignore. When testing intersections from an object/unit/vehicle, pass that object here to prevent intersections inside of the object
  • objIgnore2: Object - (Optional, default objNull) another object to ignore. When testing intersections of a line between two objects, pass the second object here to prevent intersections inside of it being reported
Return Value:
Array format [result1, result2, ...] - true if an intersection happens with an object (not with terrain) for the Nth element

Examples

Example 1:
private _hasStraightLineToChopper = lineIntersects [eyePos player, aimPos chopper, player, chopper];
Example 2:
Alternative syntax to check intersections in parallel:
private _enemies = units opfor; private _enemyDataArray = _enemies apply { [eyePos player, aimPos _x, player, _x] }; private _result = lineIntersects _enemyDataArray;

Additional Information

See also:
lineIntersectsSurfaces lineIntersectsObjs lineIntersectsWith terrainIntersect terrainIntersectASL terrainIntersectAtASL intersect cursorObject cursorTarget checkVisibility

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
Lou Montana - c
Posted on May 31, 2012 - 10:46 (UTC)
Please note the difference: