public interface TransformableGeometry
GeometryTransformer
to apply either a
rigid or deforming transformation to the geometric attributes of
the component, such as point and mesh vertex positions, frame poses,
vector orientations, etc.Modifier and Type | Field and Description |
---|---|
static int |
TG_ARTICULATED
Flag indicating that rigid body articulation constraints should
be enforced as the transform proceeds.
|
static int |
TG_DRAGGER
Flag indicating that transform is being applied through the GUI
with use of a dragger, allowing one to filter transforms.
|
static int |
TG_PRESERVE_ORIENTATION
Flag indicating that topology should be adjusted to preserve orientation
if the GeometryTransformer is reflecting (i.e.,
GeometryTransformer.isReflecting() returns true ). |
static int |
TG_SIMULATING
Flag indicating that the system is currently simulating.
|
Modifier and Type | Method and Description |
---|---|
void |
addTransformableDependencies(TransformGeometryContext context,
int flags)
Adds to
context any transformable components which should be
transformed as the same time as this component. |
void |
transformGeometry(AffineTransform3dBase X)
Applies an affine transformation to the geometry of this component.
|
void |
transformGeometry(GeometryTransformer gtr,
TransformGeometryContext context,
int flags)
Transforms the geometry of this component, using the geometry transformer
gtr to transform its individual attributes. |
default int |
transformPriority()
Returns an index used for ordering this component within a set of
components to which
transformGeometry() will be
applied. |
static final int TG_SIMULATING
static final int TG_ARTICULATED
static final int TG_PRESERVE_ORIENTATION
GeometryTransformer.isReflecting()
returns true
). For
example, if this flag is set and the transform is reflecting, then the
vertex ordering of faces in a polygon should be reversed.static final int TG_DRAGGER
void transformGeometry(AffineTransform3dBase X)
TransformGeometryContext.transform (this, X, 0);
X
- affine transformation to apply to the componentvoid transformGeometry(GeometryTransformer gtr, TransformGeometryContext context, int flags)
gtr
to transform its individual attributes. The
context
argument supplies information about what other
components are currently being transformed, and also allows the
requesting of update actions to be performed after all transform called
have completed. The context is also the usual entity that calls
this method, from within its TransformGeometryContext.apply(maspack.geometry.GeometryTransformer, int)
method. The argument flags
provides flags to specify
various conditions associated with the the transformation.
At present, the available flags are TG_SIMULATING
and
TG_ARTICULATED
.
This method is not usually called directly by applications.
Instead, it is typically called from within the
TransformGeometryContext.apply(maspack.geometry.GeometryTransformer, int)
method of the context,
which takes care of the various operations needed for a
complete transform operation, including calling
addTransformableDependencies(artisynth.core.modelbase.TransformGeometryContext, int)
to collect other
components that should be transformed, calling
transformGeometry(maspack.matrix.AffineTransform3dBase)
for each component, notifying
component parents that the geometry has changed, and calling
any requested TransformGeometryAction
s. More details
are given in the documentation for
TransformGeometryContext.apply(maspack.geometry.GeometryTransformer, int)
.
TransformGeometryContext
provides a number of
static convenience transform
methods
which take care of building the context and calling
apply()
for a specified set of components.
This method should not
generally call transformGeometry()
for its descendant
components. Instead, descendants needing transformation should be
specified by adding them to the context in the method addTransformableDependencies(artisynth.core.modelbase.TransformGeometryContext, int)
.
gtr
- transformer implementing the transformcontext
- context information, including what other components
are being transformedflags
- specifies conditions associated with the transformationvoid addTransformableDependencies(TransformGeometryContext context, int flags)
context
any transformable components which should be
transformed as the same time as this component. This will generally
include descendant components, and may also include other components to
which this component is connected in some way.
This method is generally called from with the
TransformGeometryContext.apply(maspack.geometry.GeometryTransformer, int)
method of a
TransformGeometryContext
.
context
- context information, to which the dependent components
are added.flags
- specifies conditions associated with the transformationdefault int transformPriority()
transformGeometry()
will be
applied. Components with higher values will be transformed before those
with lower values.