Vectors
Five general functions to assist in the creation and manipulation of vectors are built into FISH.
Vector types can be 2-dimensional, or 3-dimensional.
Vector types can be created with the vector
intrinsic (using two or three arguments), or by using (x,y)
or (x,y,z)
syntax.
Component Access
Vector components can be accessed (for get or set) using parenthesis and a single argument of 1, 2, or 3.
They can also be be accessed using the c -> operator and the accessors x
, y
, or z
, either to retreive or assign a single component of the vector.
local a = vector(1.0,2.1,3.0)
local b = (4.5,6.7)
local c = a(2) ; c = 2.1
local d = b->y ; d = 6.7
a(3) = 2.5 ; a = (1.0,2.1,2.5)
a->x = 1.5 ; a = (1.5,2.1,2.5)
See Member Access Operator for obtaining components from vector types returned from FISH functions.
Mathematical Operations
The mathematical operators /, *, +, - are allowed between two vectors of the same type. Each of these operates on a component-b`y`-component basis. For example, v1 * v2 returns a vector (v1.x * v2.x, v1.y * v2.y, v1.z * v2.z). The * operator is available between a vector and a number (integer or floating-point). The / operator is also available between a vector and a number.
Please see Arithmetic for a complete table of operator support.
A few useful library functions for vectors are: math.cross
, math.dot
, math.mag
, math.mag2
, or math.unit
.
These are found in the Math Utilities section; and vector
is in the Constructors section.
Iteration
Vectors are an iterable type. This means you can use it as the target of a loop foreach statement (see Loop ForEach) and can be split (see Splitting). Each component is iterated through in order.
Was this helpful? ... | 3DEC © 2019, Itasca | Updated: Feb 25, 2024 |