home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
develop.63b38c487d,2024/12/21
The Integrative Modeling Platform
IMP Manual
Reference Guide
Tutorial Index
Modules
Classes
Examples
include
IMP
core
version 20241221.develop.63b38c487d
rigid_body_geometries.h
Go to the documentation of this file.
1
/**
2
* \file IMP/core/rigid_body_geometries.h
3
* \brief functionality for defining rigid bodies
4
*
5
* Copyright 2007-2022 IMP Inventors. All rights reserved.
6
*/
7
8
#ifndef IMPCORE_RIGID_BODY_GEOMETRIES_H
9
#define IMPCORE_RIGID_BODY_GEOMETRIES_H
10
11
#include <IMP/core/core_config.h>
12
#include "
rigid_bodies.h
"
13
#include "internal/rigid_body_tree.h"
14
#include <
IMP/display/particle_geometry.h
>
15
16
IMPCORE_BEGIN_NAMESPACE
17
18
/** Show the collision detection hierarchy for a rigid body.*/
19
class
IMPCOREEXPORT
RigidBodyHierarchyGeometry
20
:
public
display::SingletonGeometry
{
21
Pointer<internal::RigidBodyHierarchy>
h_;
22
unsigned
int
node_, layer_;
23
RigidBodyHierarchyGeometry
(internal::RigidBodyHierarchy *h,
unsigned
int
node,
24
unsigned
int
layer);
25
26
public
:
27
RigidBodyHierarchyGeometry
(
RigidBody
rb,
28
const
ParticlesTemp
&constituents);
29
display::Geometries
get_components
()
const override
;
30
IMP_OBJECT_METHODS
(
RigidBodyHierarchyGeometry
);
31
};
32
33
IMP_PARTICLE_GEOMETRY(RigidBodyDerivative,
core::RigidBody
, {
34
ret = internal::get_rigid_body_derivative_geometries(d.get_model(),
35
d.get_particle_index());
36
});
37
38
IMP_PARTICLE_GEOMETRY(RigidBodyFrame,
core::RigidBody
, {
39
ret.push_back(
new
display::ReferenceFrameGeometry
(d.get_reference_frame()));
40
});
41
42
/** Display the torque on a rigid body as a line segment.*/
43
class
IMPCOREEXPORT
RigidBodyTorque
:
public
display::SegmentGeometry
{
44
WeakPointer<Particle>
p_;
45
mutable
algebra::Segment3D
cache_;
46
static
algebra::Segment3D
extract_geometry(
Particle
*p);
47
48
public
:
49
RigidBodyTorque
(
Particle
*p);
50
const
algebra::Segment3D
&get_geometry()
const override
;
51
};
52
53
IMPCORE_END_NAMESPACE
54
55
#endif
/* IMPCORE_RIGID_BODY_GEOMETRIES_H */
IMP::display::SingletonGeometry
A base class for geometry contained in particles.
Definition:
particle_geometry.h:24
IMP::core::RigidBodyTorque
Definition:
rigid_body_geometries.h:43
IMP::core::RigidBodyHierarchyGeometry
Definition:
rigid_body_geometries.h:19
IMP::WeakPointer
Smart pointer to Object-derived classes that does not refcount.
Definition:
WeakPointer.h:77
IMP::display::SegmentGeometry
Display a segment.
Definition:
primitive_geometries.h:47
IMP_OBJECT_METHODS
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition:
object_macros.h:25
IMP::Vector< WeakPointer< Particle > >
IMP::Pointer< internal::RigidBodyHierarchy >
IMP::display::ReferenceFrameGeometry
Display a reference frame.
Definition:
primitive_geometries.h:66
rigid_bodies.h
functionality for defining rigid bodies
particle_geometry.h
Represent an XYZR particle with a sphere.
IMP::algebra::Segment3D
Simple implementation of segments in 3D.
Definition:
Segment3D.h:25
IMP::display::Geometry::get_components
virtual Geometries get_components() const
Return a set of geometry composing this one.
Definition:
declare_Geometry.h:48
IMP::Particle
Class to handle individual particles of a Model object.
Definition:
Particle.h:43
IMP::core::RigidBody
A decorator for a rigid body.
Definition:
rigid_bodies.h:82