hom_mat3d_scale T_hom_mat3d_scale HomMat3dScale HomMat3dScale (Operator)
Name
hom_mat3d_scale T_hom_mat3d_scale HomMat3dScale HomMat3dScale
— Add a scaling to a homogeneous 3D transformation matrix.
Signature
Herror T_hom_mat3d_scale (const Htuple HomMat3D , const Htuple Sx , const Htuple Sy , const Htuple Sz , const Htuple Px , const Htuple Py , const Htuple Pz , Htuple* HomMat3DScale )
void HomMat3dScale (const HTuple& HomMat3D , const HTuple& Sx , const HTuple& Sy , const HTuple& Sz , const HTuple& Px , const HTuple& Py , const HTuple& Pz , HTuple* HomMat3DScale )
HHomMat3D HHomMat3D ::HomMat3dScale (const HTuple& Sx , const HTuple& Sy , const HTuple& Sz , const HTuple& Px , const HTuple& Py , const HTuple& Pz ) const
HHomMat3D HHomMat3D ::HomMat3dScale (double Sx , double Sy , double Sz , double Px , double Py , double Pz ) const
static void HOperatorSet .HomMat3dScale (HTuple homMat3D , HTuple sx , HTuple sy , HTuple sz , HTuple px , HTuple py , HTuple pz , out HTuple homMat3DScale )
HHomMat3D HHomMat3D .HomMat3dScale (HTuple sx , HTuple sy , HTuple sz , HTuple px , HTuple py , HTuple pz )
HHomMat3D HHomMat3D .HomMat3dScale (double sx , double sy , double sz , double px , double py , double pz )
Description
hom_mat3d_scale hom_mat3d_scale HomMat3dScale HomMat3dScale HomMat3dScale
adds a scaling by the scale factors Sx Sx Sx Sx sx
,
Sy Sy Sy Sy sy
, and Sz Sz Sz Sz sz
to the homogeneous 3D transformation matrix
HomMat3D HomMat3D HomMat3D HomMat3D homMat3D
and returns the resulting matrix in HomMat3DScale HomMat3DScale HomMat3DScale HomMat3DScale homMat3DScale
.
The scaling is described by a 3×3 scaling matrix
S. It is performed relative to the global (i.e.,
fixed) coordinate system; this corresponds to the following chain of
transformation matrices:
The point (Px Px Px Px px
,Py Py Py Py py
,Pz Pz Pz Pz pz
) is the fixed point of the
transformation, i.e., this point remains unchanged when transformed using
HomMat3DScale HomMat3DScale HomMat3DScale HomMat3DScale homMat3DScale
. 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 scaling is added, and finally a
translation that moves the fixed point back to its original position. This
corresponds to the following chain of transformations:
To perform the transformation in the local coordinate system, i.e.,
the one described by HomMat3D HomMat3D HomMat3D HomMat3D homMat3D
, use
hom_mat3d_scale_local hom_mat3d_scale_local HomMat3dScaleLocal HomMat3dScaleLocal HomMat3dScaleLocal
.
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
is stored as the tuple [ra, rb, rc, td, re, rf, rg, th, ri, rj, rk, tl].
However, it is also possible to process full 4×4 matrices,
which represent a projective 4D transformation.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Processed without parallelization.
Parameters
HomMat3D HomMat3D HomMat3D HomMat3D homMat3D
(input_control) hom_mat3d →
HHomMat3D , HTuple HTuple Htuple (real) (double ) (double ) (double )
Input transformation matrix.
Sx Sx Sx Sx sx
(input_control) number →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Scale factor along the x-axis.
Default value: 2
Suggested values: 0.125, 0.25, 0.5, 1, 2, 4, 8, 112
Restriction: Sx != 0
Sy Sy Sy Sy sy
(input_control) number →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Scale factor along the y-axis.
Default value: 2
Suggested values: 0.125, 0.25, 0.5, 1, 2, 4, 8, 112
Restriction: Sy != 0
Sz Sz Sz Sz sz
(input_control) number →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Scale factor along the z-axis.
Default value: 2
Suggested values: 0.125, 0.25, 0.5, 1, 2, 4, 8, 112
Restriction: Sz != 0
Px Px Px Px px
(input_control) point3d.x →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Fixed point of the transformation (x coordinate).
Default value: 0
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
Py Py Py Py py
(input_control) point3d.y →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Fixed point of the transformation (y coordinate).
Default value: 0
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
Pz Pz Pz Pz pz
(input_control) point3d.z →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Fixed point of the transformation (z coordinate).
Default value: 0
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
HomMat3DScale HomMat3DScale HomMat3DScale HomMat3DScale homMat3DScale
(output_control) hom_mat3d →
HHomMat3D , HTuple HTuple Htuple (real) (double ) (double ) (double )
Output transformation matrix.
Result
hom_mat3d_scale hom_mat3d_scale HomMat3dScale HomMat3dScale HomMat3dScale
returns 2 (H_MSG_TRUE) if all three scale factors are not
0. If necessary, an exception is raised.
Possible Predecessors
hom_mat3d_identity hom_mat3d_identity HomMat3dIdentity HomMat3dIdentity HomMat3dIdentity
,
hom_mat3d_translate hom_mat3d_translate HomMat3dTranslate HomMat3dTranslate HomMat3dTranslate
,
hom_mat3d_scale hom_mat3d_scale HomMat3dScale HomMat3dScale HomMat3dScale
,
hom_mat3d_rotate hom_mat3d_rotate HomMat3dRotate HomMat3dRotate HomMat3dRotate
Possible Successors
hom_mat3d_translate hom_mat3d_translate HomMat3dTranslate HomMat3dTranslate HomMat3dTranslate
,
hom_mat3d_scale hom_mat3d_scale HomMat3dScale HomMat3dScale HomMat3dScale
,
hom_mat3d_rotate hom_mat3d_rotate HomMat3dRotate HomMat3dRotate HomMat3dRotate
See also
hom_mat3d_invert hom_mat3d_invert HomMat3dInvert HomMat3dInvert HomMat3dInvert
,
hom_mat3d_identity hom_mat3d_identity HomMat3dIdentity HomMat3dIdentity HomMat3dIdentity
,
hom_mat3d_scale_local hom_mat3d_scale_local HomMat3dScaleLocal HomMat3dScaleLocal HomMat3dScaleLocal
,
pose_to_hom_mat3d pose_to_hom_mat3d PoseToHomMat3d PoseToHomMat3d PoseToHomMat3d
,
hom_mat3d_to_pose hom_mat3d_to_pose HomMat3dToPose HomMat3dToPose HomMat3dToPose
,
hom_mat3d_compose hom_mat3d_compose HomMat3dCompose HomMat3dCompose HomMat3dCompose
Module
Foundation