vectorMultiply: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(Algorithm & note)
m (Add version)
 
(65 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma3 |= Game name
|game1= arma3
|version1= 1.22


|1.22|= Game version
|gr2= Math - Vectors


____________________________________________________________________________________________
|descr= Multiplies an array of numbers by a scalar or another array of numbers.


| Multiplies 3D vector by a scalar. |= Description
|s1= numArray [[vectorMultiply]] multiplier
____________________________________________________________________________________________


| vector '''vectorMultiply''' scalar |= Syntax
|p1= numArray: [[Array]] of [[Number]]s - {{GVI|arma3|2.14|size= 0.75}} an array of any size - e.g {{GVI|arma3|1.22|size= 0.75}} vector 3D or {{GVI|arma3|2.00|size= 0.75}} 2D (the z coordinate was defaulted to 0)


|p1= vector: [[Array]] |= Parameter 1
|p2= multiplier: [[Number]] or {{GVI|arma3|2.14|size= 0.75}} [[Array]] of [[Number]]s


|p2= scalar: [[Number]] |= Parameter 2
|r1= [[Array]] of [[Number]]s


| [[Array]] |= Return value
|x1= <sqf>_newVector = [1,2,3] vectorMultiply 3; // returns [3,6,9]</sqf>
____________________________________________________________________________________________
 
|x1= <code>_newVector = [1,2,3] [[vectorMultiply]] 3; //[3,6,9]</code> |= Example 1
____________________________________________________________________________________________


| [[vectorAdd]], [[vectorDiff]], [[vectorCrossProduct]], [[vectorDotProduct]], [[vectorCos]], [[vectorMagnitude]], [[vectorMagnitudeSqr]], [[vectorDistance]], [[vectorDistanceSqr]], [[vectorDir]], [[vectorUp]], [[setVectorDir]], [[setVectorUp]], [[setVectorDirAndUp]] |= See also
|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>


<h3 style="display:none">Notes</h3>
|x4= <sqf>
<dl class="command_description">
// Override firing to throw the player towards where he's aiming
<!-- Note Section BEGIN -->
player allowDamage false;
<dd class="notedate">Posted on 28 Jun, 2014
player addAction ["", {
<dt class="note">'''[[User:ffur2007slx2_5| ffur2007slx2_5]]'''<dd class="note">
player setVelocity ((player weaponDirection "") vectorMultiply 20);
(ArmA3 1.22)Algorithm:
}, "", 0, false, true, "DefaultAction"];
<code>
</sqf>
Vector = [x,y,z]; scalar = a;
Result = [(x * a),(y * a),(z * a)];
</code>
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]].
<code>
_obj [[setVelocity]] ((([[getPosASL]] _target) [[vectorDiff]] ([[getPosASL]] _obj)) [[vectorMultiply]] 2);
</code>
<!-- Note Section END -->
</dl>


<h3 style="display:none">Bottom Section</h3>
|seealso= [[vectorAdd]] [[vectorDiff]] [[vectorCrossProduct]] [[vectorDotProduct]] [[vectorMagnitude]] [[matrixMultiply]]
}}


{{Note
|user= ffur2007slx2_5
|timestamp= 20140628082100
|text= {{GVI|arma3|1.22}} Algorithm:
<sqf>
Vector = [x, y, z]; scalar = a;
Result = [(x * a), (y * a), (z * a)];
</sqf>


[[Category:Arma_3:_New_Scripting_Commands_List|{{uc:{{PAGENAME}}}}]]
It is recommended to use [[vectorMultiply]] instead of [[BIS_fnc_vectorMultiply]].
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
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]].
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
<sqf>_obj setVelocity (((getPosASL _target) vectorDiff (getPosASL _obj)) vectorMultiply 2);</sqf>
}}

Latest revision as of 18:27, 3 July 2024

Hover & click on the images for description

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 - Arma 3 logo black.png2.14 an array of any size - e.g Arma 3 logo black.png1.22 vector 3D or Arma 3 logo black.png2.00 2D (the z coordinate was defaulted to 0)
multiplier: Number or Arma 3 logo black.png2.14 Array of Numbers
Return Value:
Array of Numbers

Examples

Example 1:
_newVector = [1,2,3] vectorMultiply 3; // returns [3,6,9]
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

See also:
vectorAdd vectorDiff vectorCrossProduct vectorDotProduct vectorMagnitude matrixMultiply

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
ffur2007slx2_5 - c
Posted on Jun 28, 2014 - 08:21 (UTC)
Arma 3 logo black.png1.22 Algorithm:
Vector = [x, y, z]; scalar = a; Result = [(x * a), (y * a), (z * a)];
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.
_obj setVelocity (((getPosASL _target) vectorDiff (getPosASL _obj)) vectorMultiply 2);