Workspace 6.21.5
Public Member Functions | List of all members
BoundingPlane Class Reference

Describes a bounding plane region in 3D space. More...

#include <Mesh/Geometry/boundingplane.h>

Inheritance diagram for BoundingPlane:
[legend]

Public Member Functions

 BoundingPlane ()
 
 BoundingPlane (const BoundingPlane &plane)
 
 BoundingPlane (const Vector3d &point, const Vector3d &normal)
 
BoundingPlaneclone () const override
 
BoundingPlanecloneRegion () const override
 
bool contains (const Vector3d &p) const override
 
void destroy () override
 
bool getBoundingBox (Vector3d &minimum, Vector3d &maximum) const override
 
Vector3d getNormal () const
 
Vector3d getPoint () const
 
bool isNull () const override
 
bool operator!= (const BoundingPlane &v) const
 
bool operator== (const BoundingPlane &b) const
 
void setNormal (const Vector3d &n)
 
void setPoint (const Vector3d &p)
 
bool visit (RegionProcessor &processor) override
 
- Public Member Functions inherited from Region
virtual ~Region ()=default
 
virtual RegioncloneRegion () const =0
 
virtual bool contains (const Vector3d &p) const =0
 
virtual void destroy ()=0
 
virtual bool getBoundingBox (Vector3d &minimum, Vector3d &maximum) const =0
 
virtual bool getBoundingSphere (Vector3d &center, double &radius) const
 
virtual bool isNull () const =0
 
virtual bool visit (RegionProcessor &processor)=0
 
- Public Member Functions inherited from ObjectGroup
 ~ObjectGroup () override
 
bool add (const QString &name, DataObject &obj)
 
bool canSerialize () const override
 
ObjectGroupclone () const override=0
 
bool empty () const
 
void ensureGroupHasData ()
 
void erase (int index)
 
DataObjectgetChild (const QString &name)
 
const DataObjectgetChild (const QString &name) const
 
DataObjectgetDataObject (int index)
 
const DataObjectgetDataObject (int index) const
 
int getIndex (const QString &name) const
 
const QString & getName (int index) const
 
virtual QString getPreferedWidget (const QString &name) const
 
bool hasData () const
 
bool haveName (const QString &name) const
 
bool insert (const QString &name, DataObject &obj, int index=-1)
 
bool load (const QJsonDocument &doc)
 
bool load (const SerializedItem &item) override
 
bool save (QJsonDocument &doc) const
 
bool save (SerializedItem &item) const override
 
unsigned size () const
 
- Public Member Functions inherited from Clonable
virtual ~Clonable ()=default
 
virtual Clonableclone () const =0
 
- Public Member Functions inherited from Serialize
virtual ~Serialize ()=default
 
virtual bool canSerialize () const =0
 
virtual bool load (const SerializedItem &item)=0
 
virtual bool save (SerializedItem &item) const =0
 

Additional Inherited Members

- Protected Member Functions inherited from ObjectGroup
 ObjectGroup ()
 
void clear ()
 
ObjectGroupoperator= (const ObjectGroup &rhs)
 
bool operator== (const ObjectGroup &rhs) const
 
void swap (ObjectGroup &rhs)
 

Detailed Description

A bounding plane defines a region on the side of the plane that the normal vector points to. Clients should take care to ensure that they don't assign a zero vector to the plane's normal. Doing so will likely result in nonsense being returned from contains() and will also make getBoundingBox() return false to indicate failure.

Constructor & Destructor Documentation

◆ BoundingPlane() [1/3]

Constructs a plane at the origin with normal along the positive X axis.

◆ BoundingPlane() [2/3]

BoundingPlane ( const BoundingPlane plane)
Parameters
planeThe bounding plane to copy.

◆ BoundingPlane() [3/3]

BoundingPlane ( const Vector3d point,
const Vector3d normal 
)
Parameters
pointA point on the plane.
normalThe normal vector of the plane. It should never be a zero vector.

Member Function Documentation

◆ clone()

BoundingPlane * clone ( ) const
overridevirtual
Returns
A clone of this object.
Note
Subclasses would normally return their own type rather than the Clonable type. The C++ language rules allow a more derived type to be returned from a virtual function and the compiler will still treat it as a valid override.

We redeclare this function only so that the more derived return type is available without casting.

Implements ObjectGroup.

◆ cloneRegion()

BoundingPlane * cloneRegion ( ) const
inlineoverridevirtual

This function should be called clone() but the Visual Studio compilers do not handle covariant return types when multiple inheritance from a virtual base class is involved. Since Region is often combined with other Clonable classes such as ObjectGroup, we don't provide clone() but instead provide cloneRegion() which is effectively doing the same thing, albeit with the annoyance of a different function name.

Note that subclasses will need to tell DataExecution::TypedDataFactory about their cloneRegion() implementation explicitly if they do not also inherit from some other Clonable base class as well, since Region does not derive from Clonable (which means the template specializations for TypedDataFactory will not automatically detect cloneRegion()).

Implements Region.

◆ contains()

bool contains ( const Vector3d p) const
overridevirtual
Parameters
pThe point to test.
Returns
True if the point p is on the plane or on the side that the normal vector points to.

Implements Region.

◆ destroy()

void destroy ( )
overridevirtual

Destroys the object. This function is usually implemented by calling operator delete on the object.

See also
clone()

Implements Region.

◆ getBoundingBox()

bool getBoundingBox ( Vector3d minimum,
Vector3d maximum 
) const
overridevirtual
Parameters
minimumIf the function returns true, then at exit this will hold the corner of the bounding box corresponding to the minimum values of X, Y and Z.
maximumIf the function returns true, then at exit this will hold the corner of the bounding box corresponding to the maximum values of X, Y and Z.

The bounding box is guaranteed to contain all the regions for which a point passed to contains() will return true. It can be useful as a way of short-circuiting a more expensive test for whether a point is contained in a complex region. How conservative the bounding box is will be determined entirely by the subclass. It is allowable for the subclass to return the entire 3D domain as the bounding box (and indeed some subclasses logically have to do this, such as RegionNegate).

Returns
True if the bounding box could be defined. A return value of false would normally indicate that the region is null.
See also
getBoundingSphere(), isNull()

Implements Region.

◆ getNormal()

Vector3d getNormal ( ) const
Returns
The normal vector of the plane.
Precondition
The bounding plane must not be null.

◆ getPoint()

Vector3d getPoint ( ) const
Returns
The point on the plane.
Precondition
The bounding plane must not be null.

◆ isNull()

bool isNull ( ) const
overridevirtual
Returns
True if the bounding plane is null.

Implements Region.

◆ operator!=()

bool operator!= ( const BoundingPlane v) const
inline

◆ operator==()

bool operator== ( const BoundingPlane b) const

◆ setNormal()

void setNormal ( const Vector3d n)
Parameters
nThe new normal vector of the plane. It should never be a zero vector.

◆ setPoint()

void setPoint ( const Vector3d p)
Parameters
pThe new point on the plane.

◆ visit()

bool visit ( RegionProcessor processor)
overridevirtual

Visit the specified region processor, invoking the correct processing function. Subclasses will need to override this to invoke the correct function.

Implements Region.