vectorMultiply: Difference between revisions
| Lou Montana (talk | contribs) m (Text replacement - "<dl class="command_description"> <dd class="notedate">" to "<dl class="command_description"> <dt></dt> <dd class="notedate">") | m (Unify version info for vector commands) | ||
| (39 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
| {{RV|type=command | {{RV|type=command | ||
| | arma3 | |game1= arma3 | ||
| |version1= 1.22 | |||
| | | |gr2= Math - Vectors | ||
| |descr= Multiplies an array of numbers by a scalar or another array of numbers.<br> | |||
| {{Feature|GVI|arma3|2.14|Since {{GVI|arma3|2.14|size= 0.75}} any count of numbers is valid, if one array is larger than the other, the remaining elements are inserted without change.<br> | |||
| Before {{GVI|arma3|2.14|size= 0.75}}, the first argument had to be vector 3D, or {{GVI|arma3|2.00|size= 0.75}} 2D (Which still returned 3D result, with z coordinate defaulted to 0)}}  | |||
| |s1= numArray [[vectorMultiply]] multiplier | |||
| |p1= numArray: [[Array]] of [[Number]]s - an array of any size to be multiplied with the multiplier | |||
| | | |p2= multiplier: [[Number]] or {{GVI|arma3|2.14|size= 0.75}} [[Array]] of [[Number]]s | ||
| |  | |r1= [[Array]] of [[Number]]s | ||
| |  | |x1= <sqf>_newVector = [1,2,3] vectorMultiply 3; // returns [3,6,9]</sqf> | ||
| | | |x2= <sqf> | ||
| [1,2,3,4] vectorMultiply [1,2,3,4];	// [1,4,9,16] | |||
| [1,2,3,4] vectorMultiply 2;			// [2,4,6,8] | |||
| [1,2,3,4] vectorMultiply [2];		// [2,2,3,4] | |||
| [2] vectorMultiply [1,2,3,4];		// [2,2,3,4] | |||
| [1,2,3] vectorMultiply [1,2,3,4,5];	// [1,4,9,4,5] | |||
| </sqf> | |||
| | | |x3= <sqf> | ||
| private _eyePos = eyePos player; | |||
| private _eyeDir = getCameraViewDirection player;	// this is a normalized vector, i.e. its magnitude is 1 | |||
| private _100mFurther = _eyeDir vectorMultiply 100;	// since _eyeDir is normalised (length = 1m), multiplying it by 100 means 100m in that direction | |||
| private _lookPos = _eyePos vectorAdd _100mFurther;	// the position where player is looking 100m ahead | |||
| </sqf> | |||
| |  | |x4= <sqf> | ||
| // Override firing to throw the player towards where he's aiming | |||
| player allowDamage false; | |||
| player addAction ["", { | |||
| 	player setVelocity ((player weaponDirection "") vectorMultiply 20); | |||
| }, "", 0, false, true, "DefaultAction"]; | |||
| </sqf> | |||
| |seealso= [[vectorAdd]] | |seealso= [[vectorAdd]] [[vectorDiff]] [[vectorCrossProduct]] [[vectorDotProduct]] [[vectorMagnitude]] [[matrixMultiply]] | ||
| }} | }} | ||
| {{Note | |||
| |user= ffur2007slx2_5 | |||
| |timestamp= 20140628082100 | |||
| |text= {{GVI|arma3|1.22}} Algorithm: | |||
| <sqf> | |||
| {{GVI|arma3|1.22}} Algorithm: | Vector = [x, y, z]; scalar = a; | ||
| < | Result = [(x * a), (y * a), (z * a)]; | ||
| Result = [(x * a),(y * a),(z * a)];</ | </sqf> | ||
| It is recommended to use [[vectorMultiply]] instead of [[BIS_fnc_vectorMultiply]]. This is a very useful function, as it can be used with the velocity command to move an object from one position to another. (ie <vector1> to <vector2>) - ensure both positions are found using [[getPosASL]]. | |||
| < | It is recommended to use [[vectorMultiply]] instead of [[BIS_fnc_vectorMultiply]]. | ||
| This is a very useful function, as it can be used with the velocity command to move an object from one position to another. (ie <vector1> to <vector2>) - ensure both positions are found using [[getPosASL]]. | |||
| <sqf>_obj setVelocity (((getPosASL _target) vectorDiff (getPosASL _obj)) vectorMultiply 2);</sqf> | |||
| }} | |||
Latest revision as of 16:24, 18 March 2025
Description
- Description:
- Multiplies an array of numbers by a scalar or another array of numbers.
 
- Groups:
- Math - Vectors
Syntax
- Syntax:
- numArray vectorMultiply multiplier
- Parameters:
- numArray: Array of Numbers - an array of any size to be multiplied with the multiplier
- multiplier: Number or  2.14 Array of Numbers 2.14 Array of Numbers
- Return Value:
- Array of Numbers
Examples
- Example 1:
- Example 2:
- [1,2,3,4] vectorMultiply [1,2,3,4]; // [1,4,9,16] [1,2,3,4] vectorMultiply 2; // [2,4,6,8] [1,2,3,4] vectorMultiply [2]; // [2,2,3,4] [2] vectorMultiply [1,2,3,4]; // [2,2,3,4] [1,2,3] vectorMultiply [1,2,3,4,5]; // [1,4,9,4,5]
- Example 3:
- private _eyePos = eyePos player; private _eyeDir = getCameraViewDirection player; // this is a normalized vector, i.e. its magnitude is 1 private _100mFurther = _eyeDir vectorMultiply 100; // since _eyeDir is normalised (length = 1m), multiplying it by 100 means 100m in that direction private _lookPos = _eyePos vectorAdd _100mFurther; // the position where player is looking 100m ahead
- Example 4:
- // Override firing to throw the player towards where he's aiming player allowDamage false; player addAction ["", { player setVelocity ((player weaponDirection "") vectorMultiply 20); }, "", 0, false, true, "DefaultAction"];
Additional Information
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 Jun 28, 2014 - 08:21 (UTC)
- 
 1.22 Algorithm:
It is recommended to use vectorMultiply instead of BIS_fnc_vectorMultiply.
This is a very useful function, as it can be used with the velocity command to move an object from one position to another. (ie <vector1> to <vector2>) - ensure both positions are found using getPosASL. 1.22 Algorithm:
It is recommended to use vectorMultiply instead of BIS_fnc_vectorMultiply.
This is a very useful function, as it can be used with the velocity command to move an object from one position to another. (ie <vector1> to <vector2>) - ensure both positions are found using getPosASL.
