User Tools

Site Tools


visual3d:documentation:pipeline:expressions:array_and_matrix_functions

Array and Matrix Functions

These array and matrix functions can be used anywhere Visual3D allows expressions to be used.

Arrays

Arrays can be thought of as a 1-dimensional ordered list of numerical values.

Vector

Vector(a,b, etc) - creates a vector of the number of components specified

! Create a metric signal with 2 components and one frame
Metric_Explicit
! /RESULT_METRIC_FOLDER=PROCESSED
/RESULT_METRIC_NAME=VEC2
/METRIC_VALUE=2+3
;

! Create a vector containing a constant, a two dimensional metric and a 3 dimensional model based signal.
Evaluate_Expression
/EXPRESSION=vector (1, METRIC::PROCESSED::VEC2, LINK_MODEL_BASED::ORIGINAL::RKNEE_ANGLE)
! /SIGNAL_TYPES=
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
! /RESULT_TYPES=DERIVED
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=TEST
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;

The resulting signal will have the first three columns (one for the constant, one for the vector of 2 components) buffered to the number of frames of RKNEE_ANGLE by replicating the first frame.

List

list(a,b,etc) - creates a list (column vector) of the number of rows specified.

Unit_Vector

unit_vector (a, b, etc) - creates a unit vector of the number of components specified.

Rotation Matrices

Rotation matrices are used throughout Visual3D because they can entirely contain the information regarding a segment's pose.

Rotation Multiply

Rotation_Multiply(a,b) - Multiplies two rotation matrices

Example: Multiply two ROTATION signals

Evaluate_Expression
/EXPRESSION=ROTATION_MULTIPLY(ROTATION_INVERSE(ROTATION::ORIGINAL::PELVIS_SHIFTED_4x4),CURRENT_SIGNAL)
/SIGNAL_TYPES=ROTATION
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=ROTATION
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=_MULT
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
;

Rotation Inverse

Rotation_Inverse(a) - Calculates the inverse of a rotation matrix

Example: Inverse of a 4×4 ROTATION signal or a 3×3 LINK_MODEL_BASED ROTATION

Evaluate_Expression
/EXPRESSION=ROTATION_INVERSE(ROTATION::ORIGINAL::PELVIS_SHIFTED_4x4)
/SIGNAL_TYPES=ROTATION
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=ROTATION
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=_INV
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
;

Note: A good description of the inverse of a ROTATION signals can be found here

Rotation Transpose

Rotation_Transpose(a) - Creates the transposition of a rotation matrix.

Example: Transpose of a 3×3 LINK_MODEL_BASED ROTATION signal

Evaluate_Expression
/EXPRESSION=ROTATION_TRANSPOSE(ROTATION::ORIGINAL::PELVIS_SHIFTED_4x4)
/SIGNAL_TYPES=ROTATION
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=ROTATION
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=_T
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
;

Pose_4x4

Pose_4x4(a,0,0,0,123) - Creates a 4×4 rotation signal based on signal “a” with the translation of the origin (0,0,0) and the orientation defined by Euler angles with the Euler sequence 123.

This function was created in support of the shadow segments feature.

Example: Create a rotation matrix for a shadow segment of the right heel

POSE_4X4(R_HEEL,0,0,0,123)

See Also

Go back to see other Expression functions.

visual3d/documentation/pipeline/expressions/array_and_matrix_functions.txt · Last modified: 2025/05/16 13:01 by wikisysop