public abstract class DeformationTransformer extends GeometryTransformer
r returns its deformed position
f(r) and the deformation gradient F at that
location.GeometryTransformer.Constrainer, GeometryTransformer.UndoState, GeometryTransformer.UniformScalingConstrainer| Constructor and Description |
|---|
DeformationTransformer() |
| Modifier and Type | Method and Description |
|---|---|
void |
computeLocalTransforms(Matrix3d PL,
Vector3d Ndiag,
RigidTransform3d T)
Computes the matrices
PL and N that transform
points xl local to a coordinate frame T after
that frame is itself transformed. |
void |
computeTransform(AffineTransform3d XR,
AffineTransform3d X)
Transforms an affine transform
X and returns the result in
XR. |
void |
computeTransform(Matrix3d MR,
Matrix3d M,
Vector3d r)
Transforms a general 3 X 3 matrix
M, located at reference
position r, and returns the result in MR. |
void |
computeTransform(Plane pr,
Plane p,
Vector3d r)
Transforms a plane
p, located at reference position
r, and returns the result in pr. |
void |
computeTransform(RotationMatrix3d RR,
Vector3d Ndiag,
RotationMatrix3d R,
Vector3d r)
Transforms a rotation matrix
R, located at reference
position r, and returns the result in RR. |
void |
computeTransformNormal(Vector3d nr,
Vector3d n,
Vector3d r)
Transforms a normal vector
n, located at a reference
position r, and returns the result in
nr. |
void |
computeTransformPnt(Point3d pr,
Point3d p)
Transforms a point
p and returns the result in
pr. |
void |
computeTransformVec(Vector3d vr,
Vector3d v,
Vector3d r)
Transforms a vector
v, located at a reference
position r, and returns the result in
vr. |
abstract void |
getDeformation(Vector3d p,
Matrix3d F,
Vector3d r)
Computes the deformed position
f(r) and deformation
gradient F for a given reference point r in
undeformed coordinates. |
DeformationTransformer |
getInverse()
Returns
null by since this transformer is not by default
invertible; subclasses my override this. |
boolean |
isAffine()
Returns
false since this transformer does not implement a
linear affine transform. |
boolean |
isInvertible()
Returns
false since this transformer is not by default
invertible; subclasses my override this. |
boolean |
isRigid()
Returns
false since this transformer does not implement a
linear rigid transform. |
computeLinearizedTransform, computeLocalAffineTransform, computeTransform, create, isReflecting, isRestoring, isSaving, popRestoreData, restoreObject, saveObject, setUndoState, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transformNormal, transformNormal, transformPnt, transformPnt, transformVec, transformVec, transformWorld, transformWorldpublic boolean isRigid()
false since this transformer does not implement a
linear rigid transform.isRigid in class GeometryTransformerpublic boolean isAffine()
false since this transformer does not implement a
linear affine transform.isAffine in class GeometryTransformerpublic boolean isInvertible()
false since this transformer is not by default
invertible; subclasses my override this.isInvertible in class GeometryTransformerpublic DeformationTransformer getInverse()
null by since this transformer is not by default
invertible; subclasses my override this.getInverse in class GeometryTransformerpublic abstract void getDeformation(Vector3d p, Matrix3d F, Vector3d r)
f(r) and deformation
gradient F for a given reference point r in
undeformed coordinates.p - if non-null, returns the deformed positionF - if non-null, returns the deformation gradientr - reference point in undeformed coordinatespublic void computeTransformPnt(Point3d pr, Point3d p)
p and returns the result in
pr. The transform is computed according to
pr = f(p)This method provides the low level implementation for point transformations and does not do any saving or restoring of data.
computeTransformPnt in class GeometryTransformerpr - transformed pointp - point to be transformedpublic void computeTransformVec(Vector3d vr, Vector3d v, Vector3d r)
v, located at a reference
position r, and returns the result in
vr.
The transform is computed according to
vr = F vwhere F is the deformation gradient at the reference position. This method provides the low level implementation for vector transformations and does not do any saving or restoring of data.
computeTransformVec in class GeometryTransformervr - transformed vectorv - vector to be transformedr - reference position of the vector, in original coordinatespublic void computeLocalTransforms(Matrix3d PL, Vector3d Ndiag, RigidTransform3d T)
PL and N that transform
points xl local to a coordinate frame T after
that frame is itself transformed. The updated local coordinates are
given by
xl' = N PL xlwhere
PL is symmetric positive definite and
N is a diagonal matrix that is either the identity,
or a reflection that flips a single axis. See the documentation
for GeometryTransformer.computeLocalTransforms(maspack.matrix.Matrix3d, maspack.matrix.Vector3d, maspack.matrix.RigidTransform3d).computeLocalTransforms in class GeometryTransformerPL - primary transformation matrixNdiag - if non-null, returns the diagonal components of NT - rigid transform for which the local transforms are computedpublic void computeTransformNormal(Vector3d nr, Vector3d n, Vector3d r)
n, located at a reference
position r, and returns the result in
nr.
The transform is computed according to
-1 T
nr = F n
where F is the deformation gradient at the reference position.
The result is not normalized since the unnormalized form could be
useful in some contexts.
This method provides the low level implementation for normal
transformations and does not do any saving or restoring of data.computeTransformNormal in class GeometryTransformernr - transformed normaln - normal to be transformedr - reference position of the normal, in original coordinatespublic void computeTransform(AffineTransform3d XR, AffineTransform3d X)
X and returns the result in
XR. If
[ A p ]
X = [ ]
[ 0 1 ]
the transform is computed according to
[ F A f(p) ]
XR = [ ]
[ 0 1 ]
where f(p) and F are the deformation and deformation gradient at p.
This method provides the low level implementation for the transformation
of affine transforms and does not do any saving or restoring of data.computeTransform in class GeometryTransformerXR - transformed transformX - transform to be transformedpublic void computeTransform(RotationMatrix3d RR, Vector3d Ndiag, RotationMatrix3d R, Vector3d r)
R, located at reference
position r, and returns the result in RR.
The transform is computed according to
RR = RF Rwhere PF RF = F is the left polar decomposition of the deformation gradient at the reference position. This method provides the low level implementation for the transformation of rotation matrices and does not do any saving or restoring of data.
computeTransform in class GeometryTransformerRR - transformed rotationR - rotation to be transformedr - reference position of the rotation, in original coordinatesNdiag - if non-null, returns the diagonal elements of the
matrix Npublic void computeTransform(Matrix3d MR, Matrix3d M, Vector3d r)
M, located at reference
position r, and returns the result in MR.
The transform is computed according to
MR = F Mwhere F is the deformation gradient at the reference position. This method provides the low level implementation for the transformation of 3 X 3 matrices and does not do any saving or restoring of data.
computeTransform in class GeometryTransformerMR - transformed matrixM - matrix to be transformedr - reference position of the matrix, in original coordinatespublic void computeTransform(Plane pr, Plane p, Vector3d r)
p, located at reference position
r, and returns the result in pr.
Assume that p is defined by a normal n
and offset o such that all planar points x
satisfy
n^T x = oThen the transformed normal
nr and offset or
are computed according to
nr = inv(F)^T n nr = nr / ||nr|| or = nr^T f(r)where F is the deformation gradient at the reference position. This method provides the low level implementation for the transformation of planes and does not do any saving or restoring of data.
computeTransform in class GeometryTransformerpr - transformed planep - plane to be transformedr - reference position of the plane, in original coordinates