vectorMultiply: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "ArmA3" to "{{arma3}}")
m (Some wiki formatting)
 
(41 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{RV|type=command
{{RV|type=command


| arma3
|game1= arma3
 
|version1= 1.22
|1.22


|gr2= Math - Vectors
|gr2= Math - Vectors


| Multiplies 3D vector by a scalar.
|descr= Multiplies 3D vector by a scalar.


| vector [[vectorMultiply]] scalar
|s1= vector [[vectorMultiply]] scalar


|p1= vector: [[Array]] - vector 3D or 2D (since Arma 3 v1.99.146539, z coordinate is defaulted to 0)
|p1= vector: [[Array]] - vector 3D or 2D (since Arma 3 v2.00, z coordinate is defaulted to 0)


|p2= scalar: [[Number]]
|p2= scalar: [[Number]]


| [[Array]]
|r1= [[Array]]
 
|x1= <code>_newVector = [1,2,3] [[vectorMultiply]] 3; {{cc|returns [3,6,9]}}</code>


| [[vectorAdd]], [[vectorDiff]], [[vectorCrossProduct]], [[vectorDotProduct]], [[vectorCos]], [[vectorMagnitude]], [[vectorMagnitudeSqr]], [[vectorDistance]], [[vectorDistanceSqr]], [[vectorDir]], [[vectorUp]], [[setVectorDir]], [[setVectorUp]], [[setVectorDirAndUp]], [[vectorNormalized]], [[vectorFromTo]], [[matrixMultiply]], [[matrixTranspose]]
|x1= <sqf>_newVector = [1,2,3] vectorMultiply 3; // returns [3,6,9]</sqf>
}}
 
|seealso= [[vectorAdd]] [[vectorDiff]] [[vectorCrossProduct]] [[vectorDotProduct]] [[vectorCos]] [[vectorMagnitude]] [[vectorMagnitudeSqr]] [[vectorDistance]] [[vectorDistanceSqr]] [[vectorDir]] [[vectorUp]] [[setVectorDir]] [[setVectorUp]] [[setVectorDirAndUp]] [[vectorNormalized]] [[vectorFromTo]] [[matrixMultiply]] [[matrixTranspose]]
|x2=<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 normalized, multiplying it by 100 means 100 m in that direction
private _lookPos = _eyePos vectorAdd _100mFurther; // the position where player is looking 100m ahead
</sqf>|x3=<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>}}


<dl class="command_description">
<dl class="command_description">
<!-- Note Section BEGIN -->
 
<dt></dt>
<dd class="notedate">Posted on 28 Jun, 2014</dd>
<dd class="notedate">Posted on 28 Jun, 2014</dd>
<dt class="note">[[User:ffur2007slx2_5| ffur2007slx2_5]]</dt>
<dt class="note">[[User:ffur2007slx2_5| ffur2007slx2_5]]</dt>
<dd class="note">
<dd class="note">
({{arma3}} 1.22) Algorithm:
{{GVI|arma3|1.22}} Algorithm:
<code>Vector = [x,y,z]; scalar = a;
<sqf>Vector = [x, y, z]; scalar = a;
Result = [(x * a),(y * a),(z * a)];</code>
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]].
<code>_obj [[setVelocity]] ((([[getPosASL]] _target) [[vectorDiff]] ([[getPosASL]] _obj)) [[vectorMultiply]] 2);</code>
<sqf>_obj setVelocity (((getPosASL _target) vectorDiff (getPosASL _obj)) vectorMultiply 2);</sqf>
<!-- Note Section END -->
</dl>
</dl>

Latest revision as of 20:50, 8 March 2024

Hover & click on the images for description

Description

Description:
Multiplies 3D vector by a scalar.
Groups:
Math - Vectors

Syntax

Syntax:
vector vectorMultiply scalar
Parameters:
vector: Array - vector 3D or 2D (since Arma 3 v2.00, z coordinate is defaulted to 0)
scalar: Number
Return Value:
Array

Examples

Example 1:
_newVector = [1,2,3] vectorMultiply 3; // returns [3,6,9]
Example 2:
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 normalized, multiplying it by 100 means 100 m in that direction private _lookPos = _eyePos vectorAdd _100mFurther; // the position where player is looking 100m ahead
Example 3:
// 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 vectorCos vectorMagnitude vectorMagnitudeSqr vectorDistance vectorDistanceSqr vectorDir vectorUp setVectorDir setVectorUp setVectorDirAndUp vectorNormalized vectorFromTo matrixMultiply matrixTranspose

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 28 Jun, 2014
ffur2007slx2_5
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);