KrisLibrary
1.0.0
|
An AnyGeometry with collision detection information. More...
#include <AnyGeometry.h>
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 | |
AnyCollisionGeometry3D & | operator= (const AnyCollisionGeometry3D &rhs) |
AnyCollisionGeometry3D & | operator= (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 RigidTransform & | PrimitiveCollisionData () const |
const CollisionMesh & | TriangleMeshCollisionData () const |
const CollisionPointCloud & | PointCloudCollisionData () const |
const CollisionImplicitSurface & | ImplicitSurfaceCollisionData () const |
const CollisionConvexHull3D & | ConvexHullCollisionData () const |
const vector< AnyCollisionGeometry3D > & | GroupCollisionData () const |
RigidTransform & | PrimitiveCollisionData () |
CollisionMesh & | TriangleMeshCollisionData () |
CollisionPointCloud & | PointCloudCollisionData () |
CollisionImplicitSurface & | ImplicitSurfaceCollisionData () |
CollisionConvexHull3D & | ConvexHullCollisionData () |
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 | |
AnyGeometry3D & | operator= (const AnyGeometry3D &rhs)=default |
AnyGeometry3D & | operator= (AnyGeometry3D &&rhs)=default |
const char * | TypeName () const |
const GeometricPrimitive3D & | AsPrimitive () const |
const Meshing::TriMesh & | AsTriangleMesh () const |
const Meshing::PointCloud3D & | AsPointCloud () const |
const Meshing::VolumeGrid & | AsImplicitSurface () const |
const ConvexHull3D & | AsConvexHull () const |
const vector< AnyGeometry3D > & | AsGroup () const |
GeometricPrimitive3D & | AsPrimitive () |
Meshing::TriMesh & | AsTriangleMesh () |
Meshing::PointCloud3D & | AsPointCloud () |
Meshing::VolumeGrid & | AsImplicitSurface () |
ConvexHull3D & | AsConvexHull () |
vector< AnyGeometry3D > & | AsGroup () |
GLDraw::GeometryAppearance * | TriangleMeshAppearanceData () |
const GLDraw::GeometryAppearance * | TriangleMeshAppearanceData () 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) |
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.
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 | ) |
Sets the active transform without modifying the underlying geometry. To modify the geometry, call Transform(). Note: if you do actually modify the geometry using Transform(), ReinitCollisions() should be called.
References Geometry::ClosestPoint(), Math3D::GeometricPrimitive3D::ClosestPoints(), Geometry::Collides(), Geometry::AnyDistanceQueryResult::cp1, Geometry::AnyDistanceQueryResult::d, Geometry::AnyDistanceQueryResult::dir1, Geometry::Distance(), Geometry::AnyDistanceQueryResult::elem1, GET_LOGGER, Geometry::AnyDistanceQueryResult::hasPenetration, Geometry::NearbyPoints(), Geometry::NearbyTriangles(), and Geometry::AnyDistanceQuerySettings::upperBound.
Referenced by Convert().
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.