Plane geometry.
The Plane class represents the geometric primitive plane, which is one of the basic geometric primitives of the pe module. The class is derived from the GeomPrimitive base class, which makes the plane both a geometric primitive and a rigid body.
The plane geometry is an infinite rigid body dividing the global space in two half spaces. One of these half spaces is considered to be inside the plane. Bodies entering this half space are therefore colliding with the plane. The other half space is considered to be outside the plane. The plane is represented by the following equation:
\f[ ax + by + cz = d , \f]
where a, b and c are the x, y and z component of the normal vector. The normal n of the plane is a normalized vector that points towards the half space outside the plane. d is the distance/displacement from the origin of the global world frame to the plane. A positive value of d indicates that the origin of the global world frame is inside the plane, whereas a negative value of d indicates that the origin is outside the plane. A value of 0 therefore indicates that the origin is on the surface of the plane. The global position \( (x,y,z) \) of the plane can be considered the anchor point of the plane. Rotations that are performed via the setOrientation() or the rotate() functions rotate the plane around this anchor point.
#include <Plane.h>
Public Member Functions | |
Constructor | |
Plane (id_t sid, id_t uid, const Vec3 &gpos, const Vec3 &normal, real_t d, MaterialID material) | |
Constructor for the Plane class. More... | |
Destructor | |
~Plane () override | |
Destructor for the PlaneBase class. More... | |
Get functions | |
real_t | getVolume () const override |
Returns the volume of the plane. More... | |
const Vec3 & | getNormal () const |
Returns the normal of the plane in reference to the global world frame. More... | |
real_t | getDisplacement () const |
Returns the displacement/distance from the origin of the global world frame. More... | |
Output functions | |
void | print (std::ostream &os, const char *tab) const override |
Output of the current state of a plane. More... | |
Public Member Functions inherited from walberla::pe::GeomPrimitive | |
MaterialID | getMaterial () const |
Returns the material of the geometric primitive. More... | |
Public Member Functions inherited from walberla::pe::RigidBody | |
virtual | ~RigidBody ()=0 |
Destructor for the RigidBody class. More... | |
void | wake () |
Waking the rigid body and ending the sleep mode. More... | |
void | calcMotion () |
Calculating the current motion of a rigid body. More... | |
bool | hasManager () const |
Returns whether the rigid body currently has a supervising rigid body manager. More... | |
ManagerID | getManager () |
Returns the supervising rigid body manager of the rigid body. More... | |
ConstManagerID | getManager () const |
bool | hasSuperBody () const |
Returns whether the rigid body is contained in a superordinate body. More... | |
BodyID | getSuperBody () |
Returns the superordinate body in which the rigid body is contained. More... | |
ConstBodyID | getSuperBody () const |
BodyID | getTopSuperBody () |
Returns the top level superordinate body in which the rigid body is contained. More... | |
ConstBodyID | getTopSuperBody () const |
virtual bool | hasSubBodies () const |
bool | isFinite () const |
Returns whether the rigid body is finite or not. More... | |
bool | isAwake () const |
Returns whether the rigid body is awake or not. More... | |
bool | isFixed () const |
Returns whether the rigid body's position is fixed or not. More... | |
bool | hasInfiniteMass () const |
Checks if a body is "mobile" e.g. More... | |
bool | isVisible () const |
Returns whether the rigid body is visible or not. More... | |
bool | isMarkedForDeletion () const |
id_t | getSystemID () const |
Returns the unique system-specific ID of the rigid body. More... | |
id_t | getID () const |
Returns the user-specific ID of the rigid body. More... | |
const Vec3 | getRelPosition () const |
Returns the relative position of the rigid body within the superordinate body. More... | |
const Vec3 | getPosition () const |
Returns the global position of the center of mass of the rigid body. More... | |
const Vec3 | getBodyLinearVel () const |
Returns the relative linear velocity of the rigid body. More... | |
const Vec3 | getLinearVel () const |
Returns the global linear velocity of the rigid body. More... | |
const Vec3 | getBodyAngularVel () const |
Returns the relative angular velocity. More... | |
const Vec3 & | getAngularVel () const |
Returns the global angular velocity. More... | |
const Quat | getRelQuaternion () const |
Returns the relative orientation of the rigid body to its superbody. More... | |
const Quat | getQuaternion () const |
Returns the orientation of the rigid body. More... | |
const Mat3 | getRotation () const |
Returns the rotation of the rigid body. More... | |
real_t | getMass () const |
Returns the total mass of the rigid body. More... | |
real_t | getInvMass () const |
Returns the inverse total mass of the rigid body. More... | |
const Mat3 & | getBodyInertia () const |
Returns the moment of inertia in reference to the body frame of the rigid body. More... | |
const Mat3 | getInertia () const |
Returns the moment of inertia in reference to the global world frame. More... | |
const Mat3 & | getInvBodyInertia () const |
Returns the inverse moment of inertia in reference to the body frame of the rigid body. More... | |
const Mat3 | getInvInertia () const |
Returns the inverse moment of inertia in reference to the global world frame. More... | |
const AABB & | getAABB () const |
Returns the axis-aligned bounding box of the rigid body. More... | |
real_t | getAABBSize () const |
Returns the length of the longest side of the AABB of the rigid body. More... | |
real_t | getKineticEnergy () const |
Returns the kinetic energy of the rigid body. More... | |
real_t | getRotationalEnergy () const |
Returns the rotational energy of the rigid body. More... | |
real_t | getEnergy () const |
Returns the energy of the rigid body. More... | |
const Vec3 | vectorFromBFtoWF (real_t vx, real_t vy, real_t vz) const |
Transformation from a relative to a global vector. More... | |
const Vec3 | vectorFromBFtoWF (const Vec3 &v) const |
Transformation from a relative to a global vector. More... | |
const Vec3 | pointFromBFtoWF (real_t px, real_t py, real_t pz) const |
Transformation from a relative to a global coordinate. More... | |
const Vec3 | pointFromBFtoWF (const Vec3 &rpos) const |
Transformation from a relative to a global coordinate. More... | |
virtual Vec3 | velFromBF (real_t px, real_t py, real_t pz) const |
Calculation of the global velocity of a relative point. More... | |
virtual Vec3 | velFromBF (const Vec3 &rpos) const |
Calculation of the global velocity of a relative point. More... | |
const Vec3 | vectorFromWFtoBF (real_t vx, real_t vy, real_t vz) const |
Transformation from a global to a relative vector. More... | |
const Vec3 | vectorFromWFtoBF (const Vec3 &v) const |
Transformation from a global to a relative vector. More... | |
const Vec3 | pointFromWFtoBF (real_t px, real_t py, real_t pz) const |
Transformation from a global to a relative coordinate. More... | |
const Vec3 | pointFromWFtoBF (const Vec3 &gpos) const |
Transformation from a global to a relative coordinate. More... | |
virtual Vec3 | velFromWF (real_t px, real_t py, real_t pz) const |
Calculation of the global velocity of a point in global coordinates. More... | |
virtual Vec3 | velFromWF (const Vec3 &gpos) const |
Calculation of the global velocity of a point in global coordinates. More... | |
const Vec3 | accFromWF (real_t px, real_t py, real_t pz) const |
Calculation of the global acceleration of a point in global coordinates. More... | |
const Vec3 | accFromWF (const Vec3 &gpos) const |
Calculation of the global acceleration of a point in global coordinates. More... | |
id_t | getTypeID () const |
void | translate (real_t dx, real_t dy, real_t dz) |
Translation of the center of mass of the rigid body by the displacement vector. More... | |
void | translate (const Vec3 &dp) |
Translation of the center of mass of the rigid body by the displacement vector dp. More... | |
void | rotate (real_t x, real_t y, real_t z, real_t angle) |
Rotation of the rigid body around the global rotation axis (x,y,z) by the rotation angle angle. More... | |
void | rotate (const Vec3 &axis, real_t angle) |
Rotation of the rigid body around the specified global rotation axis by the rotation. More... | |
void | rotate (real_t xangle, real_t yangle, real_t zangle) |
Rotation of the rigid body by the Euler angles xangle, yangle and zangle. More... | |
void | rotate (const Vec3 &euler) |
Rotation of the rigid body by the Euler angles euler. More... | |
void | rotate (const Quat &dq) |
Rotation of the rigid body by the quaternion dq. More... | |
void | rotateAroundOrigin (real_t x, real_t y, real_t z, real_t angle) |
Rotation of the rigid body around the origin of the global world frame. More... | |
void | rotateAroundOrigin (const Vec3 &axis, real_t angle) |
Rotation of the rigid body around the origin of the global world frame. More... | |
void | rotateAroundOrigin (real_t xangle, real_t yangle, real_t zangle) |
Rotation of the rigid body around the origin of the global world frame. More... | |
void | rotateAroundOrigin (const Vec3 &euler) |
Rotation of the rigid body around the origin of the global world frame. More... | |
void | rotateAroundOrigin (const Quat &dq) |
Rotation of the rigid body around the origin of the global world frame. More... | |
void | rotateAroundPoint (const Vec3 &point, const Vec3 &axis, real_t angle) |
Rotation of the rigid body around a specific global coordinate. More... | |
void | rotateAroundPoint (const Vec3 &point, const Vec3 &euler) |
Rotation of the rigid body around a specific global coordinate. More... | |
bool | containsRelPoint (real_t px, real_t py, real_t pz) const |
Checks, whether a point in body relative coordinates lies inside the rigid body. More... | |
bool | containsRelPoint (const Vec3 &rpos) const |
Checks, whether a point in body relative coordinates lies inside the rigid body. More... | |
bool | containsPoint (real_t px, real_t py, real_t pz) const |
Checks, whether a point in global coordinates lies inside the rigid body. More... | |
bool | containsPoint (const Vec3 &gpos) const |
Checks, whether a point in global coordinates lies inside the rigid body. More... | |
bool | isSurfaceRelPoint (real_t px, real_t py, real_t pz) const |
Checks, whether a point in relative coordinates lies on the surface of the rigid body. More... | |
bool | isSurfaceRelPoint (const Vec3 &rpos) const |
Checks, whether a point in body relative coordinates lies on the surface of the rigid body. More... | |
bool | isSurfacePoint (real_t px, real_t py, real_t pz) const |
Checks, whether a point in global coordinates lies on the surface of the rigid body. More... | |
bool | isSurfacePoint (const Vec3 &gpos) const |
Checks, whether a point in global coordinates lies on the surface of the rigid body. More... | |
virtual Vec3 | support (const Vec3 &d) const |
Estimates the point which is farthest in direction d. More... | |
virtual Vec3 | supportContactThreshold (const Vec3 &d) const |
Estimates the point which is farthest in direction d. More... | |
bool | hasForce () const |
Returns whether the rigid body has non-zero acting forces or torques. More... | |
const Vec3 & | getForce () const |
Returns the current force acting on the body's center of mass. More... | |
const Vec3 & | getTorque () const |
Returns the current torque acting on the body's center of mass. More... | |
void | setForce (const Vec3 &f) |
Set the force acting at the body's center of mass. More... | |
void | setTorque (const Vec3 &tau) |
Set the torque acting at the body's center of mass. More... | |
void | addRelForce (real_t fx, real_t fy, real_t fz) |
Increases the total force acting in the body's center of mass. More... | |
void | addRelForce (const Vec3 &f) |
Increases the force acting in the body's center of mass. More... | |
void | addForce (real_t fx, real_t fy, real_t fz) |
Increases the force acting in the body's center of mass. More... | |
void | addForce (const Vec3 &f) |
Increases the force acting in the body's center of mass. More... | |
void | addRelForceAtRelPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz) |
Increases the force acting in the body's center of mass. More... | |
void | addRelForceAtRelPos (const Vec3 &f, const Vec3 &rpos) |
Increases the force acting in the body's center of mass. More... | |
void | addRelForceAtPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz) |
Increases the force acting in the body's center of mass. More... | |
void | addRelForceAtPos (const Vec3 &f, const Vec3 &gpos) |
Increases the force acting in the body's center of mass. More... | |
void | addForceAtRelPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz) |
Increases the force acting in the body's center of mass. More... | |
void | addForceAtRelPos (const Vec3 &f, const Vec3 &rpos) |
Increases the force acting in the body's center of mass. More... | |
void | addForceAtPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz) |
Increases the force acting in the body's center of mass. More... | |
void | addForceAtPos (const Vec3 &f, const Vec3 &gpos) |
Increases the force acting in the body's center of mass. More... | |
void | addTorque (real_t tx, real_t ty, real_t tz) |
Increasing the torque acting in the body's center of mass. More... | |
void | addTorque (const Vec3 &t) |
Increasing the torque acting in the body's center of mass. More... | |
virtual void | resetForceAndTorque () |
Resetting all acting forces and torques from the rigid body. More... | |
void | addImpulse (real_t jx, real_t jy, real_t jz) |
Applying an impulse in the body's center of mass. More... | |
void | addImpulse (const Vec3 &j) |
Applying an impulse in the body's center of mass. More... | |
void | addImpulseAtPos (real_t jx, real_t jy, real_t jz, real_t px, real_t py, real_t pz) |
Applying an impulse at the given global coordinate. More... | |
void | addImpulseAtPos (const Vec3 &j, const Vec3 &p) |
Applying an impulse at the given global coordinate. More... | |
bool | isRemote () const |
Returns whether the rigid body is remote or not. More... | |
virtual void | setRemote (bool remote) |
Setting the remote flag of the rigid body. More... | |
bool | isGlobal () const |
Returns whether the rigid body is global or not. More... | |
void | setGlobal (const bool global) |
Setting the global flag of the rigid body. More... | |
bool | isCommunicating () const |
Returns whether the rigid body is local or not. More... | |
void | setCommunicating (const bool communicating) |
Setting the local flag of the rigid body. More... | |
virtual bool | checkInvariants () |
Checks the validity of the state of the rigid body. More... | |
void | setSB (BodyID body) |
Sets the super body for the current body. More... | |
void | resetSB () |
Resets the super body for the current body. More... | |
void | setFinite (const bool finite) |
void | setVisible (bool visible) |
Setting the rigid body visible/invisible. More... | |
void | setPosition (real_t px, real_t py, real_t pz) |
Setting the global position of the rigid body. More... | |
void | setPosition (const Vec3 &gpos) |
Setting the global position of the rigid body. More... | |
void | setRelPosition (const Vec3 &gpos) |
Setting the global position of the rigid body. More... | |
void | setOrientation (real_t r, real_t i, real_t j, real_t k) |
Setting the global orientation of the rigid body. More... | |
void | setOrientation (const Quat &q) |
Setting the global orientation of the rigid body. More... | |
void | setRelOrientation (const Quat &q) |
Setting the relative position of the rigid body. More... | |
void | setMassAndInertiaToInfinity () |
Setting the mass to infinity. This will also make the inertia tensor infinite. More... | |
void | setRelLinearVel (real_t vx, real_t vy, real_t vz) |
Setting the relative linear velocity of the rigid body. More... | |
void | setRelLinearVel (const Vec3 &lvel) |
void | setLinearVel (real_t vx, real_t vy, real_t vz) |
Setting the global linear velocity of the rigid body. More... | |
void | setLinearVel (const Vec3 &lvel) |
/see setLinearVel( real_t vx, real_t vy, real_t vz ) More... | |
void | setRelAngularVel (real_t ax, real_t ay, real_t az) |
Setting the relative angular velocity of the rigid body. More... | |
void | setRelAngularVel (const Vec3 &avel) |
/see setRelAngularVel( real_t ax, real_t ay, real_t az ) More... | |
void | setAngularVel (real_t ax, real_t ay, real_t az) |
Setting the global angular velocity of the rigid body. More... | |
void | setAngularVel (const Vec3 &avel) |
/see setAngularVel( real_t ax, real_t ay, real_t az ) More... | |
void | markForDeletion () |
Marks the rigid body for deletion during the next synchronization. More... | |
Public Member Functions inherited from walberla::pe::ccd::HashGridsBodyTrait | |
void * | getGrid () const |
Returns the grid the rigid body is currently assigned to. More... | |
size_t | getHash () const |
Returns the current hash value of the rigid body. More... | |
size_t | getCellId () const |
Returns the current body container index within the cell the body is currently assigned to. More... | |
void | setGrid (void *grid) |
Setting the grid the rigid body is associated with. More... | |
void | setHash (size_t hash) |
Setting the hash value of the rigid body. More... | |
void | setCellId (size_t cell) |
Setting the body container index within the cell the body is currently assigned to. More... | |
Utility functions | |
real_t | getRelDepth (real_t px, real_t py, real_t pz) const |
Calculates the depth of a point relative to the plane's frame of reference. More... | |
real_t | getRelDepth (const Vec3 &rpos) const |
Calculates the depth of a point relative to the plane's frame of reference. More... | |
real_t | getDepth (real_t px, real_t py, real_t pz) const |
Calculates the depth of a point in global coordinates. More... | |
real_t | getDepth (const Vec3 &gpos) const |
Calculates the depth of a point in global coordinates. More... | |
real_t | getRelDistance (real_t px, real_t py, real_t pz) const |
Calculates the distance of a point relative to the plane's frame of reference. More... | |
real_t | getRelDistance (const Vec3 &rpos) const |
Calculates the distance of a point relative to the plane's frame of reference. More... | |
real_t | getDistance (real_t px, real_t py, real_t pz) const |
Calculates the distance of a point in global coordinates. More... | |
real_t | getDistance (const Vec3 &gpos) const |
Calculates the distance of a point in global coordinates. More... | |
static id_t | getStaticTypeID () |
Returns unique type id of this type. More... | |
void | setPositionImpl (real_t px, real_t py, real_t pz) override |
Setting the global position of the plane. More... | |
void | setOrientationImpl (real_t r, real_t i, real_t j, real_t k) override |
Setting the global orientation of the plane. More... | |
void | translateImpl (real_t dx, real_t dy, real_t dz) override |
Translation of the global position of the plane by the displacement vector. More... | |
void | rotateImpl (const Quat &dq) override |
Rotation of the plane by the quaternion dq. More... | |
void | rotateAroundOriginImpl (const Quat &dq) override |
Rotation of the plane around the origin of the global world frame. More... | |
void | rotateAroundPointImpl (const Vec3 &point, const Quat &dq) override |
Rotation of the plane around a specific global coordinate. More... | |
bool | containsRelPointImpl (real_t px, real_t py, real_t pz) const override |
Checks, whether a point in body relative coordinates lies inside the plane. More... | |
bool | isSurfaceRelPointImpl (real_t px, real_t py, real_t pz) const override |
Checks, whether a point in body relative coordinates lies on the plane. More... | |
void | calcBoundingBox () override |
Calculation of the bounding box of the plane. More... | |
Member variables | |
Vec3 | normal_ |
Normal of the plane in reference to the global world frame. More... | |
real_t | d_ |
Plane displacement from the origin. More... | |
static id_t | staticTypeID_ = std::numeric_limits<id_t>::max() |
template<class T , int N> | |
struct | SetBodyTypeIDs |
needed to be able to set static type ids with setStaticTypeID More... | |
static void | setStaticTypeID (id_t typeID) |
Additional Inherited Members | |
Public Attributes inherited from walberla::pe::RigidBody | |
MPIRigidBodyTrait | MPITrait |
Public Attributes inherited from walberla::pe::cr::HCSITSBodyTrait | |
size_t | index_ |
Protected Member Functions inherited from walberla::pe::GeomPrimitive | |
GeomPrimitive (id_t const typeID, id_t sid, id_t uid, MaterialID material) | |
Constructor for the GeomPrimitive class. More... | |
~GeomPrimitive () override=0 | |
Destructor for the Primitive class. More... | |
Protected Member Functions inherited from walberla::pe::RigidBody | |
virtual void | fix () |
Setting the global position (the center of mass) of the rigid body fixed. More... | |
void | signalModification () |
Signals an internal modification of a contained subordinate body. More... | |
void | signalTranslation () |
Signals a position change of a contained subordinate body. More... | |
void | signalRotation () |
Signals an orientation change of a contained subordinate body. More... | |
void | signalFixation () |
Signals a fixation change of a contained subordinate body. More... | |
virtual void | handleModification () |
Handling an internal modification of a contained subordinate body. More... | |
virtual void | handleTranslation () |
Handling a position change of a contained subordinate body. More... | |
virtual void | handleRotation () |
Handling an orientation change of a contained subordinate body. More... | |
virtual void | handleFixation () |
Handling a fixation change of a contained subordinate body. More... | |
RigidBody (id_t const typeID, id_t sid, id_t uid) | |
Constructor for the RigidBody class. More... | |
void | setMassAndInertia (const real_t mass, const Mat3 &inertia) |
Sets mass and inertia of a rigid body. More... | |
Protected Member Functions inherited from walberla::pe::ccd::HashGridsBodyTrait | |
HashGridsBodyTrait () | |
Constructor for the BodyTrait<HashGrids> specialization. More... | |
Protected Attributes inherited from walberla::pe::GeomPrimitive | |
MaterialID | material_ |
The material of the geometric primitive. More... | |
Protected Attributes inherited from walberla::pe::RigidBody | |
bool | awake_ |
Sleep mode flag. More... | |
real_t | mass_ |
The total mass of the rigid body. More... | |
real_t | invMass_ |
The inverse total mass of the rigid body. More... | |
real_t | motion_ |
The current motion of the rigid body. More... | |
Vec3 | v_ |
The linear velocity of this rigid body. More... | |
Vec3 | w_ |
Angular velocity of this rigid body. More... | |
Vec3 | force_ |
Total force (external+contact) acting in the body's center of mass. More... | |
Vec3 | torque_ |
Total torque (external+contact) acting in the body's center of mass. More... | |
Mat3 | I_ |
The moment of inertia in reference to the body's own body frame. More... | |
Mat3 | Iinv_ |
The inverse moment of inertia within the body frame. More... | |
ManagerID | manager_ |
The rigid body manager responsible for the rigid body. More... | |
BodyID | sb_ |
The superordinate rigid body. More... | |
bool | finite_ |
Finiteness flag. More... | |
bool | visible_ |
Visibility flag. More... | |
bool | remote_ |
Remote flag. More... | |
bool | communicating_ |
Communicating flag. More... | |
bool | global_ |
Global flag. More... | |
bool | toBeDeleted_ |
This flag marks the body for deletion during the next synchronization (only works on local bodies) More... | |
id_t | sid_ |
The unique system-specific body ID. More... | |
id_t | uid_ |
The user-specific body ID. More... | |
AABB | aabb_ |
Axis-aligned bounding box for the rigid body. More... | |
Protected Attributes inherited from walberla::pe::ccd::HashGridsBodyTrait | |
void * | grid_ |
Pointer to the hash grid this rigid body is currently assigned to. More... | |
size_t | hash_ |
Current hash value of this rigid body. More... | |
size_t | cellId_ |
The body's index in the body container of the grid cell this rigid body is currently assigned to. More... | |
|
explicit |
Constructor for the Plane class.
sid | Unique system-specific ID for the plane. |
uid | User-specific ID for the plane. |
gpos | The global position (anchor point) of the plane. |
normal | The plane's normal in reference to the global world frame, \( |n| = 1 \). |
d | The displacement of the plane. |
material | The material of the plane. |
The plane equation is: \( ax + by + cz = d \).
a, b and c are the x, y and z coordinate of the normal vector and d is the distance from the origin to the plane.
|
override |
Destructor for the PlaneBase class.
|
overrideprotectedvirtual |
Calculation of the bounding box of the plane.
This function updates the axis-aligned bounding box of the plane primitive according to the current position and orientation of the plane. Note that the bounding box is increased in all dimensions by pe::contactThreshold to guarantee that rigid bodies in close proximity of the plane are also considered during the collision detection process.
Implements walberla::pe::RigidBody.
|
overrideprotectedvirtual |
Checks, whether a point in body relative coordinates lies inside the plane.
px | The x-component of the relative coordinate. |
py | The y-component of the relative coordinate. |
pz | The z-component of the relative coordinate. |
Reimplemented from walberla::pe::RigidBody.
Calculates the depth of a point in global coordinates.
gpos | The global coordinate. |
Returns a positive value, if the point lies inside the plane and a negative value, if the point lies outside the plane.
Calculates the depth of a point in global coordinates.
px | The x-component of the global coordinate. |
py | The y-component of the global coordinate. |
pz | The z-component of the global coordinate. |
Returns a positive value, if the point lies inside the plane and a negative value, if the point lies outside the plane.
|
inline |
Returns the displacement/distance from the origin of the global world frame.
A positive displacement value indicates that the origin of the global world frame is contained in the plane, whereas a negative value indicates that the origin is not contained in the plane.
Calculates the distance of a point in global coordinates.
gpos | The global coordinate. |
Returns a positive value, if the point lies outside the plane and a negative value, if the point lies inside the plane.
Calculates the distance of a point in global coordinates.
px | The x-component of the global coordinate. |
py | The y-component of the global coordinate. |
pz | The z-component of the global coordinate. |
Returns a positive value, if the point lies outside the plane and a negative value, if the point lies inside the plane.
|
inline |
Returns the normal of the plane in reference to the global world frame.
Calculates the depth of a point relative to the plane's frame of reference.
rpos | The relative coordinate. |
Returns a positive value, if the point lies inside the plane and a negative value, if the point lies outside the plane.
Calculates the depth of a point relative to the plane's frame of reference.
px | The x-component of the relative coordinate. |
py | The y-component of the relative coordinate. |
pz | The z-component of the relative coordinate. |
Returns a positive value, if the point lies inside the plane and a negative value, if the point lies outside the plane.
Calculates the distance of a point relative to the plane's frame of reference.
rpos | The relative coordinate. |
Returns a positive value, if the point lies outside the plane and a negative value, if the point lies inside the plane.
Calculates the distance of a point relative to the plane's frame of reference.
px | The x-component of the relative coordinate. |
py | The y-component of the relative coordinate. |
pz | The z-component of the relative coordinate. |
Returns a positive value, if the point lies outside the plane and a negative value, if the point lies inside the plane.
|
inlinestatic |
Returns unique type id of this type.
|
inlineoverridevirtual |
Returns the volume of the plane.
Reimplemented from walberla::pe::RigidBody.
|
overrideprotectedvirtual |
Checks, whether a point in body relative coordinates lies on the plane.
px | The x-component of the relative coordinate. |
py | The y-component of the relative coordinate. |
pz | The z-component of the relative coordinate. |
The tolerance level of the check is pe::surfaceThreshold.
Reimplemented from walberla::pe::RigidBody.
|
overridevirtual |
Output of the current state of a plane.
os | Reference to the output stream. |
tab | Indentation in front of every line of the plane output. |
Implements walberla::pe::RigidBody.
|
overrideprotectedvirtual |
Rotation of the plane around the origin of the global world frame.
dq | The quaternion for the rotation. |
std::logic_error | Invalid rotation of a plane inside an exclusive section. |
Changing the orientation/rotation of the plane. The plane is rotated around the origin of the global frame around by the quaternion dq. Therefore the anchor point (global position) and the normal of the plane are changed, not its distance (displacement) to the origin.
Note:
Reimplemented from walberla::pe::RigidBody.
|
overrideprotectedvirtual |
Rotation of the plane around a specific global coordinate.
point | The global center of the rotation. |
dq | The global rotation. |
std::logic_error | Invalid rotation of a plane inside an exclusive section. |
This function rotates the plane around the given global coordinate point and changes the global position, the displacement from the origin, and the orientation/rotation of the plane. The plane is rotated around the given axis axis by angle degrees (radian measure).
Note:
Reimplemented from walberla::pe::RigidBody.
|
overrideprotectedvirtual |
Rotation of the plane by the quaternion dq.
dq | The quaternion for the rotation. |
std::logic_error | Invalid rotation of a plane inside an exclusive section. |
Changing the orientation/rotation of the plane. The plane is rotated around its anchor point (its current global position) by the quaternion dq. This rotation changes the normal of the plane and its distance (displacement) to the origin of the global world frame.
Note:
Reimplemented from walberla::pe::RigidBody.
|
overrideprotectedvirtual |
Setting the global orientation of the plane.
r | The quaternion scalar part. |
i,j,k | The quaternion vector part. |
std::logic_error | Invalid rotation of a plane inside an exclusive section. |
This function sets the normal of the plane corresponding to the given global orientation, where the initial orientation of the plane's normal is (0,0,1). This change of orientation corresponds to a rotation around the anchor point of the plane, which is consequently not changed. However, this rotation changes the distance (displacement) to the origin of the global world frame.
Note:
Reimplemented from walberla::pe::RigidBody.
|
overrideprotectedvirtual |
Setting the global position of the plane.
px | The x-component of the global position. |
py | The y-component of the global position. |
pz | The z-component of the global position. |
std::logic_error | Invalid translation of a plane inside an exclusive section. |
This function sets the global position (anchor point) of the plane.
Note:
Reimplemented from walberla::pe::RigidBody.
|
inlinestaticprivate |
|
overrideprotectedvirtual |
Translation of the global position of the plane by the displacement vector.
(dx,dy,dz).
dx | The x-component of the translation/displacement. |
dy | The y-component of the translation/displacement. |
dz | The z-component of the translation/displacement. |
std::logic_error | Invalid translation of a plane inside an exclusive section. |
Note:
Reimplemented from walberla::pe::RigidBody.
|
friend |
needed to be able to set static type ids with setStaticTypeID
|
protected |
Plane displacement from the origin.
The displacement can be categorized in the following way:
|
protected |
Normal of the plane in reference to the global world frame.
The normal of the plane is always pointing towards the halfspace outside the plane.