|
|
htransform.h File ReferenceDefinition of the THTransform type and the associated functions. More... #include "defines.h" #include <stdio.h> Go to the source code of this file.
Detailed DescriptionModule to manage homogeneous transforms in R^3 used to manipulated 3D geometry.
Definition in file htransform.h. Define Documentation
Dimensions of R^3.
Definition at line 27 of file htransform.h. Referenced by HTransformAdd(), HTransformApply(), HTransformPrint(), HTransformPrintT(), HTransformProduct(), and HTransformTranspose().
One of the types of homogeneous transforms in R^3: Translation along X.
Definition at line 35 of file htransform.h. Referenced by HTransformCreate().
One of the types of homogeneous transforms in R^3: Translation along Y.
Definition at line 43 of file htransform.h. Referenced by HTransformCreate().
One of the types of homogeneous transforms in R^3: Translation along Z.
Definition at line 51 of file htransform.h. Referenced by HTransformCreate().
One of the types of homogeneous transforms in R^3: Rotation about X.
Definition at line 59 of file htransform.h. Referenced by HTransformAcumRot(), and HTransformCreate().
One of the types of homogeneous transforms in R^3: Rotation about Y.
Definition at line 67 of file htransform.h. Referenced by HTransformAcumRot(), and HTransformCreate().
One of the types of homogeneous transforms in R^3: Rotation about Z.
Definition at line 75 of file htransform.h. Referenced by HTransformAcumRot(), and HTransformCreate().
One of the axis of R^3.
Definition at line 83 of file htransform.h. Referenced by HTransformAcumRot(), HTransformAcumTrans(), HTransformInverse(), HTransformRy(), HTransformRy2(), HTransformRz(), HTransformRz2(), HTransformTx(), and HTransformTxyz().
One of the axis of R^3.
Definition at line 91 of file htransform.h. Referenced by HTransformAcumRot(), HTransformAcumTrans(), HTransformInverse(), HTransformRx(), HTransformRx2(), HTransformRz(), HTransformRz2(), HTransformTxyz(), and HTransformTy().
One of the axis of R^3.
Definition at line 99 of file htransform.h. Referenced by HTransformAcumRot(), HTransformAcumTrans(), HTransformInverse(), HTransformRx(), HTransformRx2(), HTransformRy(), HTransformRy2(), HTransformTxyz(), and HTransformTz().
The 4-th dimension used to represent rotations with a lineal mapping.
Definition at line 108 of file htransform.h. Referenced by GetTransform2Link(), HTransformAcumRot(), HTransformAcumTrans(), HTransformApply(), HTransformGetElement(), HTransformInverse(), HTransformOrthonormalize(), HTransformSetElement(), HTransformTx(), HTransformTxyz(), HTransformTy(), and HTransformTz(). Typedef Documentation
A 4x4 matrix representing a homogenous matrix in R^3.
Definition at line 126 of file htransform.h. Function Documentation
Initializes a homogeneous transform with the identity matrix.
Definition at line 46 of file htransform.c. References MATRIX_INT_COPY. Referenced by GetTransform2Link(), HTransformX2Vect(), InitLink(), NewFreeJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), and NewUniversalJoint().
Here is the caller graph for this function:
Initializes a homogeneous transform from another transform.
Definition at line 55 of file htransform.c. References MATRIX_INT_COPY. Referenced by CopyJoint(), CopyLink(), and NewFixJoint().
Here is the caller graph for this function:
Initializes a homogeneous transform as a translation along X.
Definition at line 65 of file htransform.c. References AXIS_H, AXIS_X, and MATRIX_INT_COPY. Referenced by HTransformCreate(), and main().
Here is the caller graph for this function:
Initializes a homogeneous transform as a translation along Y.
Definition at line 76 of file htransform.c. References AXIS_H, AXIS_Y, and MATRIX_INT_COPY. Referenced by HTransformCreate(), and main().
Here is the caller graph for this function:
Initializes a homogeneous transform as a translation along Z.
Definition at line 87 of file htransform.c. References AXIS_H, AXIS_Z, and MATRIX_INT_COPY. Referenced by HTransformCreate(), and main().
Here is the caller graph for this function:
Initializes a homogeneous transform as a translation.
Definition at line 99 of file htransform.c. References AXIS_H, AXIS_X, AXIS_Y, AXIS_Z, and MATRIX_INT_COPY. Referenced by GenerateSphereOFF(), and HTransformX2Vect().
Here is the caller graph for this function:
Initializes a homogeneous transform as a rotation about X.
Definition at line 114 of file htransform.c. References AXIS_Y, AXIS_Z, and MATRIX_INT_COPY. Referenced by HTransformCreate(), main(), NewRevoluteJoint(), and NewUniversalJoint().
Here is the caller graph for this function:
Initializes a homogeneous transform as a rotation about Y.
Definition at line 131 of file htransform.c. References AXIS_X, AXIS_Z, and MATRIX_INT_COPY. Referenced by HTransformCreate(), HTransformX2Vect(), and main().
Here is the caller graph for this function:
Initializes a homogeneous transform as a rotation about Z.
Definition at line 148 of file htransform.c. References AXIS_X, AXIS_Y, and MATRIX_INT_COPY. Referenced by GenerateSphereOFF(), HTransformCreate(), HTransformX2Vect(), and main().
Here is the caller graph for this function:
Initializes a homogeneous transform as a rotation about X.
Definition at line 165 of file htransform.c. References AXIS_Y, AXIS_Z, and MATRIX_INT_COPY.
Initializes a homogeneous transform as a rotation about Y.
Definition at line 175 of file htransform.c. References AXIS_X, AXIS_Z, and MATRIX_INT_COPY.
Initializes a homogeneous transform as a rotation about Z.
Definition at line 185 of file htransform.c. References AXIS_X, AXIS_Y, and MATRIX_INT_COPY.
Initializes a homogeneous transform as translation/rotation in a given degree of freedom.
Definition at line 197 of file htransform.c. References HTransformRx(), HTransformRy(), HTransformRz(), HTransformTx(), HTransformTy(), HTransformTz(), RX, RY, RZ, TX, TY, and TZ.
Here is the call graph for this function:
Sets an element in a homogeneous transform. Note that if the element value is not carefully computed the result of using this function could not be an homogeneous matrix anymore (recall that the 3x3 top left sub-matrix must be orthonormal).
Definition at line 229 of file htransform.c. References AXIS_H, and Error(). Referenced by ChangeLinkReferenceFrame(), GetTransform2Link(), and HTransformX2Vect().
Here is the call graph for this function:
Here is the caller graph for this function:
Gets an element from a homogeneous transform.
Definition at line 245 of file htransform.c. References AXIS_H, and Error(). Referenced by GenerateJointEquations(), and NewFixJoint().
Here is the call graph for this function:
Here is the caller graph for this function:
Product of two homogeneous transforms.
Definition at line 263 of file htransform.c. References DIM_SP, and MATRIX_INT_COPY. Referenced by GenerateSphereOFF(), GetTransform2Link(), HTransformInverse(), HTransformX2Vect(), NewRevoluteJoint(), and NewUniversalJoint().
Here is the caller graph for this function:
Addition of two homogeneous transforms.
Definition at line 292 of file htransform.c. References DIM_SP, and MATRIX_INT_COPY.
Addition of a homogeneous transform.
Definition at line 319 of file htransform.c. References AXIS_H, AXIS_X, AXIS_Y, AXIS_Z, HTransformProduct(), and MATRIX_INT_COPY. Referenced by NewRevoluteJoint(), and NewUniversalJoint().
Here is the call graph for this function:
Here is the caller graph for this function:
Orthonormalizes the rotation part of a homogenouos transform. This is to be used when we have an approximated homogeneous transform (for instance, a homogeneous transform that is derived after several floating point operations). If the rotation part is not orthonormal then the homogeneous transform is no longer a rigid transform (it produces deformations in the objects). Right now this is implemented in a simple way
An alternative implementation could be based in a SVD of the rotation matrix: after the decomposition the diagonal matrix of (squared) eigenvalues is set to the identity and the matrix is reconstucted. In this way we could avoid the bias of adjusting the matrix from the first column.
Definition at line 343 of file htransform.c. References AXIS_H, and MATRIX_INT_COPY. Referenced by GetTransform2Link().
Here is the caller graph for this function:
Computes the homogeneous matrix that transform a unitary vector along the X axis into a generic vector. The resulting transform includes, scaling, rotation and translation. This function is typically used when plotting cylinders. This is the reason to include scale factors in Y and Z (to deform the unitary cylinder along X with radii 1 so that we get the cylinder in the desired position and with the desired witdh, typically the same in Y and Z). The length is controlled by the start-end points of the cilynder.
Definition at line 388 of file htransform.c. References HTransformIdentity(), HTransformProduct(), HTransformRy(), HTransformRz(), HTransformSetElement(), and HTransformTxyz(). Referenced by GenerateCylinderOFF(), MoveJoint(), NewRevoluteJoint(), NewUniversalJoint(), and PlotCylinder().
Here is the call graph for this function:
Here is the caller graph for this function:
Transpose of a homogeneous transform. Note that, in general the transpose of a homogeneous transform is not a homogeneous transform.
Definition at line 428 of file htransform.c. References DIM_SP, and MATRIX_INT_COPY.
Computes the result of multiplying a homogeneous transform by a translation matrix with parameters tx, ty, tz. The result is accumulated in the given transform.
Definition at line 452 of file htransform.c. References AXIS_H, AXIS_X, AXIS_Y, and AXIS_Z. Referenced by HTransformAcumTrans2().
Here is the caller graph for this function:
Computes the result of multiplying a homogeneous transform by a translation matrix with parameters tx, ty, tz. The result is accumulated in the given transform.
Definition at line 467 of file htransform.c. References HTransformAcumTrans(), and MATRIX_INT_COPY.
Here is the call graph for this function:
Computes the result of multiplying a homogeneous transform by a rotation matrix. The result is accumulated in the given transform.
Definition at line 484 of file htransform.c. References AXIS_H, AXIS_X, AXIS_Y, AXIS_Z, Error(), RX, RY, and RZ. Referenced by HTransformAcumRot2().
Here is the call graph for this function:
Here is the caller graph for this function:
Computes the result of multiplying a homogeneous transform by a rotation matrix.
Definition at line 527 of file htransform.c. References HTransformAcumRot(), and MATRIX_INT_COPY.
Here is the call graph for this function:
Multiply a homogeneous transform and a vector.
Definition at line 539 of file htransform.c. References AXIS_H, and DIM_SP. Referenced by ApplyLinkRot(), GenerateCylinderOFF(), GenerateSphereOFF(), MoveJoint(), NewRevoluteJoint(), NewUniversalJoint(), and TransformCPolyhedron().
Here is the caller graph for this function:
Prints the a homogeneous transform to a stream that can be stdtout.
Definition at line 560 of file htransform.c. References DIM_SP.
Prints the transpose of a homogeneous transform to a stream that can be stdtout. This is implemented because computer graphics community use transposed homogeneous transforms and, consequently, this is how geomview requires the transforms to be printed.
Definition at line 586 of file htransform.c. References DIM_SP. Referenced by Move3dObject(), and PlotCylinder().
Here is the caller graph for this function:
Deletes the information stored in the THTransform and frees the allocated memory space.
Definition at line 605 of file htransform.c. Referenced by DeleteJoint(), DeleteLink(), GenerateCylinderOFF(), GenerateSphereOFF(), main(), MoveJoint(), MoveLink(), NewRevoluteJoint(), NewUniversalJoint(), and PlotCylinder().
Here is the caller graph for this function:
|