KrisLibrary  1.0.0
Public Member Functions | Public Attributes | List of all members
Geometry::AnyCollisionGeometry3D Class Reference

An AnyGeometry with collision detection information. More...

#include <AnyGeometry.h>

Inheritance diagram for Geometry::AnyCollisionGeometry3D:
Geometry::AnyGeometry3D

Public Member Functions

 AnyCollisionGeometry3D (const GeometricPrimitive3D &primitive)
 
 AnyCollisionGeometry3D (const Meshing::TriMesh &mesh)
 
 AnyCollisionGeometry3D (const Meshing::PointCloud3D &pc)
 
 AnyCollisionGeometry3D (const Meshing::VolumeGrid &grid)
 
 AnyCollisionGeometry3D (const AnyGeometry3D &geom)
 
 AnyCollisionGeometry3D (const ConvexHull3D &primitive)
 
 AnyCollisionGeometry3D (const vector< AnyGeometry3D > &group)
 
 AnyCollisionGeometry3D (const AnyCollisionGeometry3D &geom)
 
 AnyCollisionGeometry3D (AnyCollisionGeometry3D &&geom)=default
 
AnyCollisionGeometry3Doperator= (const AnyCollisionGeometry3D &rhs)
 
AnyCollisionGeometry3Doperator= (AnyCollisionGeometry3D &&rhs)=default
 
void InitCollisionData ()
 
void ReinitCollisionData ()
 
bool CollisionDataInitialized () const
 Returns true if the collision data is initialized.
 
void ClearCollisionData ()
 Clears the current collision data.
 
const RigidTransformPrimitiveCollisionData () const
 
const CollisionMeshTriangleMeshCollisionData () const
 
const CollisionPointCloudPointCloudCollisionData () const
 
const CollisionImplicitSurfaceImplicitSurfaceCollisionData () const
 
const CollisionConvexHull3DConvexHullCollisionData () const
 
const vector< AnyCollisionGeometry3D > & GroupCollisionData () const
 
RigidTransformPrimitiveCollisionData ()
 
CollisionMeshTriangleMeshCollisionData ()
 
CollisionPointCloudPointCloudCollisionData ()
 
CollisionImplicitSurfaceImplicitSurfaceCollisionData ()
 
CollisionConvexHull3DConvexHullCollisionData ()
 
vector< AnyCollisionGeometry3D > & GroupCollisionData ()
 
bool Convert (Type restype, AnyCollisionGeometry3D &res, double param=0)
 
AABB3D GetAABB () const
 
Box3D GetBB () const
 
AABB3D GetAABBTight () const
 
RigidTransform GetTransform () const
 Gets the active transform.
 
void SetTransform (const RigidTransform &T)
 
bool Collides (AnyCollisionGeometry3D &geom)
 
bool Collides (AnyCollisionGeometry3D &geom, vector< int > &elements1, vector< int > &elements2, size_t maxcollisions=INT_MAX)
 
Real Distance (AnyCollisionGeometry3D &geom)
 
Real Distance (const Vector3 &pt)
 
AnyDistanceQueryResult Distance (const Vector3 &pt, const AnyDistanceQuerySettings &settings)
 
AnyDistanceQueryResult Distance (AnyCollisionGeometry3D &geom, const AnyDistanceQuerySettings &settings)
 
bool WithinDistance (AnyCollisionGeometry3D &geom, Real d)
 
bool WithinDistance (AnyCollisionGeometry3D &geom, Real d, vector< int > &elements1, vector< int > &elements2, size_t maxcollisions=INT_MAX)
 
AnyContactsQueryResult Contacts (AnyCollisionGeometry3D &other, const AnyContactsQuerySettings &settings)
 
bool RayCast (const Ray3D &r, Real *distance=NULL, int *element=NULL)
 
- Public Member Functions inherited from Geometry::AnyGeometry3D
 AnyGeometry3D (const GeometricPrimitive3D &primitive)
 
 AnyGeometry3D (const Meshing::VolumeGrid &grid)
 
 AnyGeometry3D (const Meshing::TriMesh &mesh)
 
 AnyGeometry3D (const Meshing::PointCloud3D &pc)
 
 AnyGeometry3D (const vector< AnyGeometry3D > &items)
 
 AnyGeometry3D (const ConvexHull3D &cvxhull)
 
 AnyGeometry3D (const AnyGeometry3D &geom)=default
 
 AnyGeometry3D (AnyGeometry3D &&geom)=default
 
AnyGeometry3Doperator= (const AnyGeometry3D &rhs)=default
 
AnyGeometry3Doperator= (AnyGeometry3D &&rhs)=default
 
const char * TypeName () const
 
const GeometricPrimitive3DAsPrimitive () const
 
const Meshing::TriMeshAsTriangleMesh () const
 
const Meshing::PointCloud3DAsPointCloud () const
 
const Meshing::VolumeGridAsImplicitSurface () const
 
const ConvexHull3DAsConvexHull () const
 
const vector< AnyGeometry3D > & AsGroup () const
 
GeometricPrimitive3DAsPrimitive ()
 
Meshing::TriMeshAsTriangleMesh ()
 
Meshing::PointCloud3DAsPointCloud ()
 
Meshing::VolumeGridAsImplicitSurface ()
 
ConvexHull3DAsConvexHull ()
 
vector< AnyGeometry3D > & AsGroup ()
 
GLDraw::GeometryAppearanceTriangleMeshAppearanceData ()
 
const GLDraw::GeometryAppearanceTriangleMeshAppearanceData () const
 
bool Load (const char *fn)
 
bool Save (const char *fn) const
 
bool Load (istream &in)
 
bool Save (ostream &out) const
 
bool Load (TiXmlElement *in)
 
bool Save (TiXmlElement *out) const
 
bool Empty () const
 
size_t NumElements () const
 
GeometricPrimitive3D GetElement (int elem) const
 
AABB3D GetAABB () const
 
void Transform (const RigidTransform &T)
 
void Transform (const Matrix4 &mat)
 
void Merge (const vector< AnyGeometry3D > &geoms)
 
bool Convert (Type restype, AnyGeometry3D &res, double param=0) const
 

Public Attributes

AnyValue collisionData
 
Real margin
 Amount by which the underlying geometry is "fattened".
 
RigidTransform currentTransform
 
- Public Attributes inherited from Geometry::AnyGeometry3D
Type type
 
AnyValue data
 The data, according to the type.
 
AnyValue appearanceData
 Optional appearance data, according to the type.
 

Additional Inherited Members

- Public Types inherited from Geometry::AnyGeometry3D
enum  Type {
  Primitive, TriangleMesh, PointCloud, ImplicitSurface,
  ConvexHull, Group
}
 
- Static Public Member Functions inherited from Geometry::AnyGeometry3D
static const char * TypeName (Type type)
 
static bool CanLoadExt (const char *ext)
 
static bool CanSaveExt (const char *ext)
 

Detailed Description

An AnyGeometry with collision detection information.

Because collision detection information is slow to initialize, this will only initialize it when needed to answer a collision query.

Note: Distance() returns the distance to the other geometry. If the result is <= 0, the two objects are in collision. A geometry type may support returning a signed distance if the objects are penetrating, i.e. Distance() < 0.

Member Function Documentation

bool AnyCollisionGeometry3D::Convert ( Type  restype,
AnyCollisionGeometry3D res,
double  param = 0 
)

Performs a type conversion, also copying the active transform. May be a bit faster than AnyGeometry3D.Convert for some conversions (TriangleMesh->VolumeGrid, specifically)

References GET_LOGGER, Geometry::MeshToImplicitSurface_FMM(), and SetTransform().

AABB3D AnyCollisionGeometry3D::GetAABB ( ) const

Returns an axis-aligned bounding box in the world coordinate frame containing the transformed geometry. Note: if collision data is initialized, this returns a bound around the transformed bounding volume of the collision data, which is not necessarily tight. Note: if collision data is not yet initialized, this performs the potentially slower AnyGeometry3D::GetAABB call.

References Geometry::GetBB().

AABB3D AnyCollisionGeometry3D::GetAABBTight ( ) const

Returns a tight bounding box around the data. Slower than GetAABB but tighter.

References Geometry::CollisionPointCloud::currentTransform.

Box3D AnyCollisionGeometry3D::GetBB ( ) const

Returns an oriented bounding box in the world coordinate frame containing the transformed geometry. Note: if collision data is not yet initialized, this performs the potentially slower AnyGeometry3D::GetAABB call.

References Geometry::GetBB().

void AnyCollisionGeometry3D::InitCollisionData ( )

If the collision detection data structure isn't initialized yet, this initializes it. Constructors DO NOT call this, meaning that upon construction the XCollisionData functions must not be called.

void AnyCollisionGeometry3D::ReinitCollisionData ( )

Call this any time the underlying geometry changes to reinitialize the collision detection data structure.

void AnyCollisionGeometry3D::SetTransform ( const RigidTransform T)

Member Data Documentation

AnyValue Geometry::AnyCollisionGeometry3D::collisionData

The collision data structure, according to the type.

RigidTransform Geometry::AnyCollisionGeometry3D::currentTransform

The current transform, used if the collision data is not initialized yet or the data type is Primitive / VolumeGrid.


The documentation for this class was generated from the following files: