BIS fnc rotateVector2D: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(Created page with "<syntaxhighlight lang=javascript>scriptName "Functions\vectors\fn_rotateVector2D.sqf"; /************************************************************ Rotate 2D Vector By Andrew ...")
m (Text replacement - "(\|[pr][0-9]+ *= *[^- ]*) *- *N([a-z ])" to "$1 - n$2")
 
(41 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<syntaxhighlight lang=javascript>scriptName "Functions\vectors\fn_rotateVector2D.sqf";
{{RV|type=function
/************************************************************
Rotate 2D Vector
By Andrew Barron


Parameters: [[vector], angle]
|game1= arma2
Returns: [vector]
|version1= 1.00


This function returns a 2D vector rotated a specified number
|game2= arma2oa
of degrees around the origin.
|version2= 1.50
************************************************************/


private ["_v","_d","_x","_y"];
|game3= tkoh
|version3= 1.00


//extract parameters
|game4= arma3
_v = +(_this select 0); //we don't want to modify the originally passed vector
|version4= 0.50
_d = _this select 1;


//extract old x/y values
|gr1= Vectors
_x = _v select 0;
_y = _v select 1;


//if vector is 3d, we don't want to mess up the last element
|descr= This function returns a 2D vector rotated a specified number of degrees around the origin.
_v set [0, (cos _d)*_x - (sin _d)*_y];
_v set [1, (sin _d)*_x + (cos _d)*_y];


//return new vector
|s1= [vector2D, angle] call [[BIS_fnc_rotateVector2D]]
_v
 
</syntaxhighlight>
|p1= vector2D: [[Array]] - 2D vector
 
|p2= angle: [[Number]] - angle in degree
 
|r1= [[Array]] - new vector
 
|x1= <sqf>[[5,3], 60] call BIS_fnc_rotateVector2D;//Returns[-0.0980766,5.83013]</sqf>
 
|seealso= [[BIS_fnc_crossProduct]] [[BIS_fnc_magnitudeSqr]] [[BIS_fnc_vectorFromXToY]]
}}
 
{{Note
|user= AgentRev
|timestamp= 20150121141500
|text= Be careful when using this function in conjunction with [[getDir]] or [[BIS_fnc_dirTo]], which return a clockwise angle, while the rotation is done counterclockwise as per trigonometric conventions.<br>
To counter this, simply negate their output:
<sqf>
[[0,1,0], -(getDir _object)] call BIS_fnc_rotateVector2D;
[[0,1,0], -([_unit, _vehicle] call BIS_fnc_dirTo)] call BIS_fnc_rotateVector2D;
</sqf>
}}

Latest revision as of 15:39, 8 November 2023

Hover & click on the images for description

Description

Description:
This function returns a 2D vector rotated a specified number of degrees around the origin.
Execution:
call
Groups:
Vectors

Syntax

Syntax:
[vector2D, angle] call BIS_fnc_rotateVector2D
Parameters:
vector2D: Array - 2D vector
angle: Number - angle in degree
Return Value:
Array - new vector

Examples

Example 1:
[[5,3], 60] call BIS_fnc_rotateVector2D;//Returns[-0.0980766,5.83013]

Additional Information

See also:
BIS_fnc_crossProduct BIS_fnc_magnitudeSqr BIS_fnc_vectorFromXToY

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
AgentRev - c
Posted on Jan 21, 2015 - 14:15 (UTC)
Be careful when using this function in conjunction with getDir or BIS_fnc_dirTo, which return a clockwise angle, while the rotation is done counterclockwise as per trigonometric conventions.
To counter this, simply negate their output:
[[0,1,0], -(getDir _object)] call BIS_fnc_rotateVector2D; [[0,1,0], -([_unit, _vehicle] call BIS_fnc_dirTo)] call BIS_fnc_rotateVector2D;