The rotations and transforms described above can be used to transform both vectors and points in space.
Vectors are most commonly implemented using Vector3d, while points can be implemented using the subclass Point3d. The only difference between Vector3d and Point3d is that the former ignores the translational component of rigid and affine transforms; i.e., as described in Sections A.2 and A.3, a vector v has an implied homogeneous representation of
(2.1) |
while the representation for a point p is
(2.2) |
Both classes provide a number of methods for applying rotational and affine transforms. Those used for rotations are
where R is a rotation matrix and v1 is a vector (or a point in the case of Point3d).
The methods for applying rigid or affine transforms include:
where X is a rigid or affine transform. As described above, in the case of Vector3d, these methods ignore the translational part of the transform and apply only the matrix component (R for a RigidTransform3d and A for an AffineTransform3d). In particular, that means that for a RigidTransform3d given by X and a Vector3d given by v, the method calls
produce the same result.