hom_mat2d_rotate ( : : HomMat2D, Phi, Px, Py : HomMat2DRotate )

Add a rotation to a homogeneous 2D transformation matrix.

hom_mat2d_rotate adds a rotation by the angle Phi to the homogeneous 2D transformation matrix HomMat2D and returns the resulting matrix in HomMat2DRotate. The rotation is decribed by a 2x2 rotation matrix R. It is performed relative to the global (i.e., fixed) coordinate system, which corresponds to the following chain of transformation matrices:

                   / cos(Phi) -sin(Phi) 0 \
  HomMat2DRotate = | sin(Phi)  cos(Phi) 0 | * HomMat2D
                   \    0         0     1 /

       R = | cos(Phi) -sin(Phi) |
           | sin(Phi)  cos(Phi) |

The point (Px,Py) is the fixed point of the transformation, i.e., this point remains unchanged when transformed using HomMat2DRotate. To obtain this behavior, first a translation is added to the input transformation matrix that moves the fixed point onto the origin of the global coordinate system. Then, the rotation is added, and finally a translation that moves the fixed point back to its original position. This corresponds to the following chain of transformations:

                   / 1 0 +Px \   / cos(Phi) -sin(Phi) 0 \   / 1 0 -Px \ 
  HomMat2DRotate = | 0 1 +Py | * | sin(Phi)  cos(Phi) 0 | * | 0 1 -Py | * HomMat2D
                   \ 0 0  1  /   \    0         0     1 /   \ 0 0  1  /   


Attention

Note that homogeneous matrices are stored row-by-row as a tuple; the last row is 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].


Parameters

HomMat2D (input_control)
affine2d-array -> real
Input transformation matrix.
Number of elements: 6

Phi (input_control)
angle.rad -> real / integer
Rotation angle.
Default value: 0.78
Suggested values: 0.1, 0.2, 0.3, 0.4, 0.78, 1.57, 3.14
Typical range of values: 0 <= Phi <= 6.28318530718

Px (input_control)
point.x -> real / integer
Fixed point of the transformation (x coordinate).
Default value: 0
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024

Py (input_control)
point.y -> real / integer
Fixed point of the transformation (y coordinate).
Default value: 0
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024

HomMat2DRotate (output_control)
affine2d-array -> real
Output transformation matrix.
Number of elements: 6


Result

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


Parallelization Information

hom_mat2d_rotate is reentrant and processed without parallelization.


Possible Predecessors

hom_mat2d_identity, hom_mat2d_translate, hom_mat2d_scale, hom_mat2d_rotate, hom_mat2d_slant


Possible Successors

hom_mat2d_translate, hom_mat2d_scale, hom_mat2d_rotate, hom_mat2d_slant


Module

Basic operators



Copyright © 1996-2005 MVTec Software GmbH