Operators

# hom_mat2d_compose (Operator)

## Name

hom_mat2d_compose — Multiply two homogeneous 2D transformation matrices.

## Signature

hom_mat2d_compose( : : HomMat2DLeft, HomMat2DRight : HomMat2DCompose)

## Description

hom_mat2d_compose composes a new 2D transformation matrix by multiplying the two input matrices:

```  HomMat2DCompose = HomMat2DLeft * HomMat2DRight
```

For example, if the two input matrices correspond to rigid transformations, i.e., to transformations consisting of a rotation and a translation, the resulting matrix is calculated as follows:

```  HomMat2DCompose  =  | R(l)  t(l) |  *  | R(r)  t(r) |
| 0  0   1   |     | 0  0   1   |

=  | R(l)*R(r)  R(l)*t(r)+t(l) |
|  0   0           1        |

```

## Attention

Note that homogeneous matrices are stored row-by-row as a tuple; the last row is usually not stored because it is identical for all homogeneous matrices that describe an affine transformation. For example, the homogeneous matrix

```    / ra rb tc \
| rd re tf |
\ 0  0  1  /
```

is stored as the tuple [ra, rb, tc, rd, re, tf]. However, it is also possible to process full 3×3 matrices, which represent a projective 2D transformation.

## Parallelization

• Multithreading type: reentrant (runs in parallel with non-exclusive operators).
• Multithreading scope: global (may be called from any thread).
• Processed without parallelization.

## Parameters

HomMat2DLeft (input_control)  hom_mat2d (real)

Left input transformation matrix.

HomMat2DRight (input_control)  hom_mat2d (real)

Right input transformation matrix.

HomMat2DCompose (output_control)  hom_mat2d (real)

Output transformation matrix.

## Result

If the parameters are valid, the operator hom_mat2d_compose returns 2 (H_MSG_TRUE). If necessary, an exception is raised.

## Module

Foundation

 Operators