Itasca C++ Interface
|
Interface for a faceted wall. More...
#include <ifwall.h>
Public Member Functions | |
virtual IThing * | getIThing ()=0 |
Return an IThing interface for this object. | |
virtual const IThing * | getIThing () const =0 |
Return a const IThing interface for this object. | |
virtual IBody * | getIBody ()=0 |
Return an IBody pointer. | |
virtual const IBody * | getIBody () const =0 |
Return a const IBody pointer. | |
virtual IString | getName () const =0 |
Return the QString name. | |
virtual IFWall * | getNextIFWall ()=0 |
Return the next IFWall object in the global list, or 0 if it is the last set. | |
virtual const IFWall * | getNextIFWall () const =0 |
Return the next IFWall object in the global list, or 0 if it is the last set. | |
virtual IHalfFacet * | getFirstIHalfFacet ()=0 |
Return the first IHalfFacet associated with this FWall. | |
virtual const IHalfFacet * | getFirstIHalfFacet () const =0 |
Return the const first IHalfFacet associated with this FWall. | |
virtual DExtent3 | getExtent () const =0 |
Return the DExtent3 extent of the faceted wall. | |
virtual double | getCutoffAng () const =0 |
Get the user defined cutoff angle for contact resolution - in radians. | |
virtual void | setCutoffAng (const double &d)=0 |
Set the user defined cutoff angle for contact resolution - provided in radians. | |
virtual IContainer * | getFWallAsFacetContainer ()=0 |
Return the IContainer of facets associated with a wall. | |
virtual const IContainer * | getFWallAsFacetContainer () const =0 |
Return the IContainer of facets associated with a wall. | |
virtual IContainer * | getFWallAsVertexContainer ()=0 |
Return the IContainer of vertices associated with a wall. | |
virtual const IContainer * | getFWallAsVertexContainer () const =0 |
Return the IContainer of vertices associated with a wall. | |
virtual int | getNumberFacets () const =0 |
Return the number of IHalfFacets. | |
virtual void | getFacetList (FArray< IHalfFacet * > *ret)=0 |
Return a list of IHalfFacets. | |
virtual void | getFacetList (FArray< const IHalfFacet * > *ret) const =0 |
Return a list of const IHalfFacets. | |
virtual const IHalfFacet * | findFacetWithID (uint64 id) const =0 |
Find the const IHalfFacet with ID id;. | |
virtual IHalfFacet * | findFacetWithID (uint64 id)=0 |
Find the IHalfFacet with ID id. | |
virtual const IHalfFacet * | findClosestFacet (const DVect &pos, const double &radius=limits< double >::max()) const =0 |
Find the IHalfFacet closest to pos. | |
virtual IHalfFacet * | findClosestFacet (const DVect &pos, const double &radius=limits< double >::max())=0 |
Find the const IHalfFacet closest to pos. | |
virtual void | removeIHalfFacet (IHalfFacet *fac)=0 |
Remove the IHalfFacet from the FWall. | |
virtual IHalfFacet * | addFacetFromVertices (DVect verts[dim], QString &error, uint64 id=0, bool ignoreEnd=false, bool allowStar=false)=0 |
Add a facet from vertices. | |
virtual void | doValidate ()=0 |
Cause a validate, updating convexity. | |
virtual void | getVertexList (FArray< IHalfVertex * > *ret)=0 |
Return a list of IHalfVertex objects. | |
virtual void | getVertexList (FArray< const IHalfVertex * > *ret) const =0 |
Return a list of const IHalfVertex object. | |
virtual const IHalfVertex * | findVertexWithID (uint64 id) const =0 |
Find the const IHalfVertex with ID id;. | |
virtual IHalfVertex * | findVertexWithID (uint64 id)=0 |
Find the IHalfVertex with ID id. | |
virtual const IHalfVertex * | findClosestVertex (const DVect &pos, const double &radius=limits< double >::max()) const =0 |
Find the IHalfVertex closest to pos. | |
virtual IHalfVertex * | findClosestVertex (const DVect &pos, const double &radius=limits< double >::max())=0 |
Find the const IHalfFacet closest to pos. | |
virtual DVect | getPosition () const =0 |
Return the wall position. This is implementation dependent. | |
virtual DVect | getCentRot () const =0 |
Return the center of rotation - the point about which the wall can rotate. | |
virtual DVect | getVelocity () const =0 |
Return the translational velocity of the wall. | |
virtual DAVect | getAngVelocity () const =0 |
Return the angular velocity of the wall. | |
virtual DVect | getDisplacement () const =0 |
Return the accumulated displacement of the point corresponding to position. | |
virtual DVect | getForce () const =0 |
Return the sum of all contact forces to which the wall does not react. | |
virtual DVect | getContactForce () const =0 |
virtual DAVect | getMoment () const =0 |
Return the moment of all contacts with with wall. | |
virtual DAVect | getContactMoment () const =0 |
virtual Quat | getOrient () const =0 |
Return the current orientation. | |
virtual bool | getIsClosed () const =0 |
Return a boolean indicating whether or not this is a closed wall. | |
virtual bool | getIsIn (const DVect &d) const =0 |
Return a bool indicating whether or not a point is inside a wall. If not closed then returns false. | |
virtual bool | getIsConvex () const =0 |
Retuen boolean indicating convex. Returns false if not closed. | |
virtual void | setPosition (const DVect &p)=0 |
Set the wall position to p. | |
virtual void | setCentRot (const DVect &p)=0 |
Set the wall center of rotation to p. | |
virtual void | setVelocity (const DVect &p)=0 |
Set the wall translational velocity to p. | |
virtual void | setAngVelocity (const DAVect &p)=0 |
Set the wall angular velocity to p. | |
virtual void | setDisplacement (const DVect &v)=0 |
Set the wall accumulated displacement to v. | |
virtual void | setContactForce (const DVect &v)=0 |
Set the contact force. | |
virtual void | setContactMoment (const DAVect &v)=0 |
Set the contact moment. | |
virtual void | setOrient (const Quat &q)=0 |
Set the orientation. | |
virtual bool | setProperty (const QString &name, const QVariant &v)=0 |
Set the properties in prop to v for all PieceMechanicals that are in this wall. | |
virtual void | rotate (const DVect &rotp, const DVect &axis, const double &w, bool update=true, bool noThrow=false)=0 |
virtual bool | getVertsHaveVel () const =0 |
Get the boolean indicating whether or not the vertices have velocities. | |
virtual void | updateFWallPosition (IHalfVertex *v=0, DVect *prevPos=0)=0 |
Update the position of the wall centroid. | |
virtual int | getFragmentIndex () const =0 |
Return the wall fragment index. | |
virtual void | setFragmentIndex (int ind)=0 |
Set the wall fragment index. | |
virtual void | getContactList (FArray< IContact * > *ret, const TType &type=0, const IPiece *p2=0)=0 |
Return a list of IContacts. | |
virtual void | getContactList (FArray< const IContact * > *ret, const TType &type=0, const IPiece *p2=0) const =0 |
Return a list of const IContacts. | |
virtual double | getServoGainFactor () const =0 |
Get wall servo gain relaxation factor. | |
virtual double | getServoGain () const =0 |
Get wall servo gain. | |
virtual double | getServoVmax () const =0 |
Get wall servo cap velocity. | |
virtual DVect | getServoForce () const =0 |
Get wall servo force. | |
virtual bool | getServoActive () const =0 |
Get wall servo activity status. | |
virtual int | getServoGainUpdate () const =0 |
Get wall servo gain update interval. | |
virtual void | setServoGainFactor (const double &d)=0 |
Set servo gain relaxation factor. | |
virtual void | setServoGain (const double &d)=0 |
Set servo gain. | |
virtual void | setServoVmax (const double &d)=0 |
Set servo cap velocity. | |
virtual void | setServoForce (const DVect &f)=0 |
Set servo force. | |
virtual void | setServoActive (bool b)=0 |
Set servo active status. | |
virtual void | setServoGainUpdate (int i)=0 |
Set servo gain update interval. | |
Static Public Attributes | |
static const TType | type_ = 0x4c90658e |
TType for type casting. | |
Interface for a faceted wall.
This is the interface for a faceted wall. A faceted wall is a wall that is composed of triangular facets. Each facet is composed of three edges and three vertices. A half-edge data structure is used to efficiently store and retrieve adjacency information (e.g., facets adjacent to another facet, facets that share a vertex, etc.). This implementation requires that a FWall is a manifold, orientable triangular mesh throughout. The position of a FWall is the average location of all vertices. As implemented, FWalls must exist within the model domain. When an FWall intersects a domain boundary with reflect boundary conditions an exception occurs. When an FWall intersects a domain boundary with any other boundary condition the FWall translational and angular velocities are set to 0. The vertices of an FWall can be moved and assigned a translational velocity. The user is responsible for maintaining the manifold/orientable nature of the triangular mesh in these cases. When a vertex has a translational velocity then the FWall translational/angular velocities are set to 0.
|
pure virtual |
Rotate the wall about the axis axis through the rotation point rotp by the angle w (in radians). If orientation tracking is enabled then it is updated when the update boolean is set to true