IMP  2.1.0
The Integrative Modeling Platform
IMP::algebra Namespace Reference

See IMP.algebra for more information.

Classes

class  BoundedGridRangeD
 
class  BoundingBoxD
 An axis-aligned bounding box. More...
 
class  Cone3D
 
class  Cylinder3D
 
class  DefaultEmbeddingD
 
struct  DenseGrid3D
 
class  DenseGridStorageD
 
class  DynamicNearestNeighbor3D
 
class  Ellipsoid3D
 
class  EuclideanVectorKDMetric
 
class  ExtendedGridIndexD
 An index in an infinite grid on space. More...
 
class  FixedXYZ
 A simple class for returning XYZ Euler angles. More...
 
class  GeometricPrimitiveD
 
class  GridD
 A voxel grid in d-dimensional space space. More...
 
class  GridIndexD
 Represent a real cell in a grid (one within the bounding box) More...
 
class  LinearFit2D
 Calculate line that fits best the input data points (Linear least squares) More...
 
class  LogEmbeddingD
 
class  MaxVectorKDMetric
 
class  NearestNeighborD
 
class  ParabolicFit2D
 Calculate parabola that fits best the input data points. More...
 
class  Plane3D
 
class  PrincipalComponentAnalysisD
 
class  ReferenceFrame3D
 A reference frame in 3D. More...
 
class  Reflection3D
 Reflect about a plane in 3D. More...
 
class  Rotation2D
 Stores a 2D rotation matrix. More...
 
class  Rotation3D
 3D rotation class. More...
 
class  Segment3D
 
struct  SparseGrid3D
 
class  SparseGridStorageD
 
struct  SparseUnboundedGrid3D
 
struct  SparseUnboundedGridD
 
class  SphereD
 
class  SpherePatch3D
 
class  SphericalVector3D
 Class to represent a 3D point in spherical coordinates. More...
 
class  Transformation2D
 Simple 2D transformation class. More...
 
class  Transformation3D
 Simple 3D transformation class. More...
 
class  Triangle3D
 
class  UnboundedGridRangeD
 
class  VectorD
 A Cartesian vector in D-dimensions. More...
 
class  VectorInputD
 
class  VectorInputD< 1 >
 
class  VectorKDMetric
 

Typedefs

typedef std::pair< Vector3D,
double > 
AxisAnglePair
 
typedef BoundingBoxD< 1 > BoundingBox1D
 
typedef IMP::base::Vector
< BoundingBox1D
BoundingBox1Ds
 
typedef BoundingBoxD< 2 > BoundingBox2D
 
typedef IMP::base::Vector
< BoundingBox2D
BoundingBox2Ds
 
typedef BoundingBoxD< 3 > BoundingBox3D
 
typedef IMP::base::Vector
< BoundingBox3D
BoundingBox3Ds
 
typedef BoundingBoxD< 4 > BoundingBox4D
 
typedef IMP::base::Vector
< BoundingBox4D
BoundingBox4Ds
 
typedef BoundingBoxD< 5 > BoundingBox5D
 
typedef IMP::base::Vector
< BoundingBox5D
BoundingBox5Ds
 
typedef BoundingBoxD< 6 > BoundingBox6D
 
typedef IMP::base::Vector
< BoundingBox6D
BoundingBox6Ds
 
typedef BoundingBoxD<-1 > BoundingBoxKD
 
typedef IMP::base::Vector
< BoundingBoxKD
BoundingBoxKDs
 
typedef IMP::base::Vector< Cone3DCone3Ds
 
typedef IMP::base::Vector
< Cylinder3D
Cylinder3Ds
 
typedef IMP::base::Vector
< Ellipsoid3D
Ellipsoid3Ds
 
typedef IMP::base::Vector
< LinearFit2D
LinearFit2Ds
 
typedef IMP::base::Vector
< ParabolicFit2D
ParabolicFit2Ds
 
typedef IMP::base::Vector
< Plane3D
Plane3Ds
 
typedef IMP::base::Vector
< ReferenceFrame3D
ReferenceFrame3Ds
 
typedef IMP::base::Vector
< Reflection3D
Reflection3Ds
 
typedef IMP::base::Vector
< Rotation2D
Rotation2Ds
 
typedef IMP::base::Vector
< Rotation3D
Rotation3Ds
 
typedef IMP::base::Vector
< Segment3D
Segment3Ds
 
typedef SphereD< 1 > Sphere1D
 
typedef IMP::base::Vector
< Sphere1D
Sphere1Ds
 
typedef SphereD< 2 > Sphere2D
 
typedef IMP::base::Vector
< Sphere2D
Sphere2Ds
 
typedef SphereD< 3 > Sphere3D
 
typedef IMP::base::Vector
< Sphere3D
Sphere3Ds
 
typedef SphereD< 4 > Sphere4D
 
typedef IMP::base::Vector
< Sphere4D
Sphere4Ds
 
typedef SphereD< 5 > Sphere5D
 
typedef IMP::base::Vector
< Sphere5D
Sphere5Ds
 
typedef SphereD< 6 > Sphere6D
 
typedef IMP::base::Vector
< Sphere6D
Sphere6Ds
 
typedef SphereD<-1 > SphereKD
 
typedef IMP::base::Vector
< SphereKD
SphereKDs
 
typedef IMP::base::Vector
< SpherePatch3D
SpherePatch3Ds
 
typedef IMP::base::Vector
< SphericalVector3D
SphericalVector3Ds
 
typedef IMP::base::Vector
< Transformation2D
Transformation2Ds
 
typedef IMP::base::Vector
< Transformation3D
Transformation3Ds
 
typedef IMP::base::Vector
< Triangle3D
Triangle3Ds
 
typedef VectorD< 1 > Vector1D
 
typedef base::Vector< VectorD< 1 > > Vector1Ds
 
typedef VectorD< 2 > Vector2D
 
typedef base::Vector< VectorD< 2 > > Vector2Ds
 
typedef VectorD< 3 > Vector3D
 
typedef base::Vector< VectorD< 3 > > Vector3Ds
 
typedef VectorD< 4 > Vector4D
 
typedef base::Vector< VectorD< 4 > > Vector4Ds
 
typedef VectorD< 5 > Vector5D
 
typedef base::Vector< VectorD< 5 > > Vector5Ds
 
typedef VectorD< 6 > Vector6D
 
typedef base::Vector< VectorD< 6 > > Vector6Ds
 
typedef VectorInputD< 1 > VectorInput1D
 
typedef base::Vector
< VectorInputD< 1 > > 
VectorInput1Ds
 
typedef VectorInputD< 2 > VectorInput2D
 
typedef base::Vector
< VectorInputD< 2 > > 
VectorInput2Ds
 
typedef VectorInputD< 3 > VectorInput3D
 
typedef base::Vector
< VectorInputD< 3 > > 
VectorInput3Ds
 
typedef VectorInputD< 4 > VectorInput4D
 
typedef base::Vector
< VectorInputD< 4 > > 
VectorInput4Ds
 
typedef VectorInputD< 5 > VectorInput5D
 
typedef base::Vector
< VectorInputD< 5 > > 
VectorInput5Ds
 
typedef VectorInputD< 6 > VectorInput6D
 
typedef base::Vector
< VectorInputD< 6 > > 
VectorInput6Ds
 
typedef VectorInputD<-1 > VectorInputKD
 
typedef base::Vector
< VectorInputD<-1 > > 
VectorInputKDs
 
typedef VectorD<-1 > VectorKD
 
typedef IMP::base::Vector
< IMP::base::Pointer
< VectorKDMetric > > 
VectorKDMetrics
 
typedef IMP::base::Vector
< IMP::base::WeakPointer
< VectorKDMetric > > 
VectorKDMetricsTemp
 
typedef base::Vector< VectorD<-1 > > VectorKDs
 

Functions

template<int D>
int compare (const VectorD< D > &a, const VectorD< D > &b)
 lexicographic comparison of two vectors More...
 
Rotation2D compose (const Rotation2D &a, const Rotation2D &b)
 compose two rotations a and b More...
 
Transformation3D compose (const Transformation3D &a, const Transformation3D &b)
 compose two transformations More...
 
Transformation2D compose (const Transformation2D &a, const Transformation2D &b)
 compose two transformations More...
 
Rotation3D compose (const Rotation3D &a, const Rotation3D &b)
 
Transformation3Ds get_alignments_from_first_to_second (const PrincipalComponentAnalysisD< 3 > &pca1, const PrincipalComponentAnalysisD< 3 > &pca2)
 
bool get_are_almost_equal (const double a, const double b, const double epsilon)
 Compares two values (intended for doubles) More...
 
bool get_are_colinear (const Vector3D &p1, const Vector3D &p2, const Vector3D &p3)
 Return true if the three points are co-linear.
 
double get_area (const SpherePatch3D &g)
 
double get_area (const Plane3D &g)
 
template<class Geometry >
double get_area (const Geometry &)
 Compute the area of any surface object.
 
std::pair< Vector3D, double > get_axis_and_angle (const Rotation3D &rot)
 Decompose a Rotation3D object into a rotation around an axis. More...
 
double get_ball_radius_from_volume_3d (double volume)
 Return the radius of a sphere with a given volume. More...
 
template<int D>
VectorD< D > get_basis_vector_d (unsigned int coordinate)
 Return the basis vector for the given coordinate. More...
 
VectorD<-1 > get_basis_vector_kd (int D, unsigned int coordinate)
 Return a dynamically sized basis vector.
 
BoundingBoxD< 3 > get_bounding_box (const SpherePatch3D &g)
 
BoundingBoxD< 3 > get_bounding_box (const Segment3D &g)
 
BoundingBoxD< 3 > get_bounding_box (const Ellipsoid3D &g)
 
BoundingBoxD< 3 > get_bounding_box (const Cone3D &g)
 
BoundingBoxD< 3 > get_bounding_box (const Cylinder3D &g)
 
BoundingBoxD< 3 > get_bounding_box (const Plane3D &g)
 
template<int D>
BoundingBoxD< D > get_bounding_box (const SphereD< D > &g)
 
template<int D>
BoundingBoxD< D > get_bounding_box (const BoundingBoxD< D > &g)
 
template<class Geometry >
BoundingBoxD< 3 > get_bounding_box (const Geometry &)
 Compute the bounding box of any geometric object.
 
template<int D, class Storage , class Value , class Embedding >
BoundingBoxD< D > get_bounding_box (const GridD< D, Storage, Value, Embedding > &g)
 
template<int D>
const BoundingBoxD< D > & get_bounding_box_d_geometry (const BoundingBoxD< D > &g)
 
double get_closer_power_of_2 (double x)
 Closest power of 2 for a number, not necessarily higher.
 
const Cone3Dget_cone_3d_geometry (const Cone3D &g)
 
template<typename T >
get_constrained (const T x, const T x0, const T xF)
 Constrains a value between two given limits.
 
template<unsigned int D>
BoundingBoxD< D > get_cube_d (double radius)
 Cube with radius of length radius. More...
 
BoundingBoxD<-1 > get_cube_kd (unsigned int d, double radius)
 Cube with radius of length side. More...
 
const Cylinder3Dget_cylinder_3d_geometry (const Cylinder3D &g)
 
std::string get_data_path (std::string file_name)
 Return the full path to installed data. More...
 
double get_distance (const Segment3D &s, const Vector3D &p)
 Get the distance between a segment and a point. More...
 
double get_distance (const Plane3D &pln, const Vector3D &p)
 Return the distance between a plane and a point in 3D. More...
 
double get_distance (const Segment3D &a, const Segment3D &b)
 Get the distance between two segments. More...
 
template<int D>
double get_distance (const SphereD< D > &a, const SphereD< D > &b)
 Return the distance between the two spheres if they are disjoint. More...
 
double get_distance (const Rotation3D &r0, const Rotation3D &r1)
 Return a distance between the two rotations. More...
 
template<int D>
double get_distance (const VectorD< D > &v1, const VectorD< D > &v2)
 compute the distance between two vectors More...
 
IntPairs get_edges (const BoundingBoxD< 3 > &)
 Return the edges of the box as indices into the vertices list. More...
 
template<int D>
VectorD< D > get_elementwise_product (const algebra::VectorD< D > &a, const algebra::VectorD< D > &b)
 
template<int D>
VectorD< D > get_elementwise_product (const Ints &a, const algebra::VectorD< D > &b)
 
const Ellipsoid3Dget_ellipsoid_3d_geometry (const Ellipsoid3D &g)
 
Sphere3D get_enclosing_sphere (const Sphere3Ds &ss)
 Return a sphere containing the listed spheres. More...
 
Sphere3D get_enclosing_sphere (const Vector3Ds &ss)
 Return a sphere containing the listed spheres. More...
 
std::string get_example_path (std::string file_name)
 Return the path to installed example data for this module. More...
 
Rotation2D get_identity_rotation_2d ()
 Builds an identity rotation in 2D.
 
Rotation3D get_identity_rotation_3d ()
 Return a rotation that does not do anything. More...
 
Transformation2D get_identity_transformation_2d ()
 Returns a transformation that does not do anything. More...
 
Transformation3D get_identity_transformation_3d ()
 Return a transformation that does not do anything. More...
 
template<int D>
bool get_interiors_intersect (const SphereD< D > &a, const SphereD< D > &b)
 Return true if the two balls bounded by the two spheres interesect. More...
 
template<int D>
bool get_interiors_intersect (const BoundingBoxD< D > &a, const BoundingBoxD< D > &b)
 Return true if they intersect. More...
 
Rotation3D get_interpolated (const Rotation3D &a, const Rotation3D &b, double f)
 Interpolate between two rotations. More...
 
template<int D>
BoundingBoxD< D > get_intersection (const BoundingBoxD< D > &a, const BoundingBoxD< D > &b)
 Return the intersecting bounding box. More...
 
Triangle3D get_largest_triangle (const Vector3Ds &points)
 Return the largest triangle defined by 3 points from the input. More...
 
template<int D, class Storage , class Value , class Embedding >
Value get_linearly_interpolated (const GridD< D, Storage, Value, Embedding > &g, const VectorD< D > &pt)
 
template<int D>
double get_maximum_length (const BoundingBoxD< D > &a)
 Return the maximum axis aligned extent. More...
 
float get_next_larger_power_of_2 (float x)
 Closest power of 2 that can contain a number x.
 
double get_next_larger_power_of_2 (double x)
 Closest power of 2 that can contain a number x.
 
template<int D>
VectorD< D > get_ones_vector_d (double v=1)
 Return a vector of ones (or another constant)
 
template<int D>
VectorD< D > get_ones_vector_kd (unsigned int Di, double v=1)
 Return a vector of ones (or another constant) More...
 
const Plane3Dget_plane_3d_geometry (const Plane3D &g)
 
template<int D>
double get_power_distance (const SphereD< D > &a, const SphereD< D > &b)
 Return the power distance between the two spheres. More...
 
template<int D>
PrincipalComponentAnalysisD< D > get_principal_components (const base::Vector< VectorD< D > > &ps)
 Perform principal components analysis on a set of vectors. More...
 
Transformation3D get_random_local_transformation (Vector3D origin, double max_translation=5., double max_angle_in_rad=0.26)
 Get a local transformation. More...
 
Rotation2D get_random_rotation_2d ()
 Builds an identity rotation in 2D.
 
Rotation3D get_random_rotation_3d ()
 Pick a rotation at random from all possible rotations. More...
 
Rotation3D get_random_rotation_3d (const Rotation3D &center, double distance)
 Pick a rotation at random near the provided one. More...
 
Vector3D get_reflected (const Plane3D &pln, const Vector3D &p)
 return the point reflected about the plane
 
double get_relative_projection_on_segment (const Segment3D &s, const algebra::Vector3D &p)
 
Rotation3D get_rotation_about_axis (const Vector3D &axis, double angle)
 Generate a Rotation3D object from a rotation around an axis. More...
 
Rotation3D get_rotation_about_normalized_axis (const Vector3D &axis_norm, double angle)
 
Transformation3D get_rotation_about_point (const Vector3D &point, const Rotation3D &rotation)
 Generate a Transformation3D object from a rotation around a point. More...
 
Transformation2D get_rotation_about_point (const Vector2D &point, const Rotation2D &rotation)
 Generates a Transformation2D object from a rotation around a point. More...
 
Rotation3D get_rotation_from_matrix (double m00, double m01, double m02, double m10, double m11, double m12, double m20, double m21, double m22)
 Generate a Rotation3D object from a rotation matrix. More...
 
Rotation3D get_rotation_from_vector4d (const VectorD< 4 > &v)
 Compute a rotatation from an unnormalized quaternion. More...
 
Rotation3D get_rotation_from_x_y_axes (const Vector3D &x, const Vector3D &y)
 
Rotation3D get_rotation_taking_first_to_second (const Vector3D &v1, const Vector3D &v2)
 Create a rotation from the first vector to the second one. More...
 
Rotation2D get_rotation_to_x_axis (const Vector2D &v)
 
template<typename T >
int get_rounded (const T &x)
 Rounds a number to next integer. More...
 
const Segment3Dget_segment_3d_geometry (const Segment3D &g)
 
template<typename T >
int get_sign (const T &x)
 Sign of a number. 1 if the number is higher or equal to 0 and -1 otherwise.
 
template<int D>
const SphereD< D > & get_sphere_d_geometry (const SphereD< D > &g)
 
const SpherePatch3Dget_sphere_patch_3d_geometry (const SpherePatch3D &g)
 
double get_squared (double x)
 
template<int D>
double get_squared_distance (const VectorD< D > &v1, const VectorD< D > &v2)
 compute the squared distance between two vectors More...
 
double get_surface_area (const Cone3D &g)
 
double get_surface_area (const Ellipsoid3D &g)
 
double get_surface_area (const Cylinder3D &g)
 
double get_surface_area (const SphereD< 3 > &g)
 
double get_surface_area (const BoundingBoxD< 3 > &g)
 
template<class Geometry >
double get_surface_area (const Geometry &)
 Compute the surface area of any volumetric object.
 
FloatPair get_surface_area_and_volume (const algebra::Sphere3Ds &ss)
 
Transformation3D get_transformation_3d (const Transformation2D &t2d)
 Builds a 3D transformation from a 2D one. More...
 
template<class Vector3DsOrXYZs0 , class Vector3DsOrXYZs1 >
IMP::algebra::Transformation3D get_transformation_aligning_first_to_second (const Vector3DsOrXYZs0 &source, const Vector3DsOrXYZs1 &target)
 Compute the rigid transform bringing the first point set to the second. More...
 
Transformation2D get_transformation_aligning_pair (const Vector2Ds &set_from, const Vector2Ds &set_to)
 
Transformation3D get_transformation_from_first_to_second (const ReferenceFrame3D &a, const ReferenceFrame3D &b)
 
Transformation3D get_transformation_from_first_triangle_to_second (Triangle3D first_tri, Triangle3D second_tri)
 Return a transformation between two triangles.
 
ReferenceFrame3D get_transformed (const ReferenceFrame3D &rf, const Transformation3D &tr)
 
BoundingBoxD< 3 > get_transformed (const BoundingBoxD< 3 > &bb, const Transformation3D &tr)
 Return a bounding box containing the transformed box.
 
template<class Storage , class Embedding >
const Storage::Value get_trilinearly_interpolated (const GridD< 3, Storage, typename Storage::Value, Embedding > &g, const Vector3D &v, const typename Storage::Value &outside=0)
 Use trilinear interpolation to compute a smoothed value at v. More...
 
Rotation3Ds get_uniform_cover_rotations_3d (unsigned int num_points)
 Cover the space of rotations evenly. More...
 
algebra::Rotation3Ds get_uniformly_sampled_rotations (double delta)
 Generates a nondegenerate set of Euler angles with a delta resolution. More...
 
template<int D>
BoundingBoxD< D > get_union (BoundingBoxD< D > a, const BoundingBoxD< D > &b)
 Return the union bounding box. More...
 
template<unsigned int D>
BoundingBoxD< D > get_unit_bounding_box_d ()
 Box with radius one. More...
 
BoundingBoxD<-1 > get_unit_bounding_box_kd (unsigned int d)
 Box with radius one. More...
 
template<unsigned int D>
SphereD< D > get_unit_sphere_d ()
 
SphereD<-1 > get_unit_sphere_kd (unsigned int d)
 
template<int D>
VectorD< D > get_vector_d_geometry (const SphereD< D > &s)
 
template<int D>
const VectorD< D > & get_vector_d_geometry (const VectorD< D > &g)
 
Vector3Ds get_vertices (const BoundingBoxD< 3 > &bb)
 Return a list of the 8 bounding points for the bounding box. More...
 
double get_volume (const Cone3D &g)
 
double get_volume (const Ellipsoid3D &g)
 
double get_volume (const Cylinder3D &g)
 
double get_volume (const SphereD< 3 > &g)
 
template<int D>
double get_volume (const BoundingBoxD< D > &bb)
 
double get_volume (const BoundingBoxD< 3 > &g)
 
template<class Geometry >
double get_volume (const Geometry &)
 Compute the volume of any volumetric object.
 
template<int D>
VectorD< D > get_zero_vector_d ()
 Return a vector of zeros.
 
template<int D>
VectorD< D > get_zero_vector_kd (int Di)
 Return a dynamically sized vector of zeros.
 
template<int D>
VectorD< D > operator* (double s, const VectorD< D > &o)
 
template<int D>
void set_bounding_box_d_geometry (BoundingBoxD< D > &g, const BoundingBoxD< D > &v)
 
void set_cone_3d_geometry (Cone3D &g, const Cone3D &v)
 
void set_cylinder_3d_geometry (Cylinder3D &g, const Cylinder3D &v)
 
void set_ellipsoid_3d_geometry (Ellipsoid3D &g, const Ellipsoid3D &v)
 
void set_plane_3d_geometry (Plane3D &g, const Plane3D &v)
 
void set_segment_3d_geometry (Segment3D &g, const Segment3D &gi)
 
template<int D>
void set_sphere_d_geometry (SphereD< D > &g, const SphereD< D > &v)
 
void set_sphere_patch_3d_geometry (SpherePatch3D &g, const SpherePatch3D &v)
 
template<int D>
void set_vector_d_geometry (VectorD< D > &g, const VectorD< D > &v)
 

Variables

static const double PI = 3.1415926535897931
 the constant pi
 

Standard module methods

All IMP modules have a set of standard methods to help get information about the module and about files associated with the module.

std::string get_module_version ()
 
std::string get_module_name ()
 

Endian

IMP provides a variety of functionality to manage byte order in input and output data.

void reversed_read (void *dest, size_t size, size_t nitems, std::ifstream &f, bool reverse)
 Reads from file in normal or reverse order. More...
 
void reversed_write (const void *src, size_t size, size_t nitems, std::ofstream &f, bool reverse=false)
 Writes to a file in normal or reversed order. More...
 
template<class T >
void get_swapped_endian (T &x)
 Conversion between little and big endian. Goes both ways.
 
bool get_is_big_endian ()
 Returns 1 if machine is big endian else 0.
 
bool get_is_little_endian ()
 Returns 1 if machine is little endian else 0.
 

Simple geometric IO

These functions write geometry to text files, one line per geometric primitive. Each line has the form “x y z” for points or “x y z r” for spheres. We can easily add general dimension support if requested.. Lines beginning with "#" are treated as comments.

void write_pts (const Vector3Ds &vs, base::TextOutput out)
 Write a set of 3D vectors to a file. More...
 
Vector3Ds read_pts (base::TextInput input)
 Read a set of 3D vectors from a file. More...
 
void write_spheres (const Sphere3Ds &vs, base::TextOutput out)
 Write a set of 3d spheres to a file. More...
 
Sphere3Ds read_spheres (base::TextInput input)
 Read a set of 3d spheres from a file. More...
 

Python Only

The following functions are only availale in Python as the equivalent C++ functionality is provided via template functions or in other ways that don't directly map to python.

typedef Grid3D< int,
SparseGridStorage3D< int,
BoundedGridStorage3D > > 
SparseIntGrid3D
 
typedef Grid3D< int,
SparseGridStorage3D< int,
UnboundedGridStorage3D > > 
SparseUnboundedIntGrid3D
 
typedef Grid3D< double,
DenseGridStorage3D< double > > 
DenseDoubleGrid3D
 
typedef Grid3D< float,
DenseGridStorage3D< float > > 
DenseFloatGrid3D
 
Transformation3D get_transformation_aligning_first_to_second (Vector3Ds a, Vector3Ds b)
 

Euler Angles

There are many conventions for how to define Euler angles, based on choices of which of the x,y,z axis to use in what order and whether the rotation axis is in the body frame (and hence affected by previous rotations) or in in a fixed frame. See http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles for a general description.

  • All Euler angles are specified in radians.
  • Only x-y-z order is currently supported.
  • To convert Euler angles in a different order, one can compose a Rotation3D from three rotations using get_rotation_about_axis function.
typedef IMP::base::Vector
< FixedXYZ
FixedXYZs
 
Rotation3D get_rotation_from_fixed_xyz (double xr, double yr, double zr)
 Initialize a rotation in x-y-z order from three angles. More...
 
Rotation3D get_rotation_from_fixed_zxz (double phi, double theta, double psi)
 Initialize a rotation from euler angles. More...
 
Rotation3D get_rotation_from_fixed_zyz (double Rot, double Tilt, double Psi)
 Generate a rotation object from Euler Angles. More...
 
FixedXYZ get_fixed_xyz_from_rotation (const Rotation3D &r)
 The inverse of rotation_from_fixed_xyz() More...
 

Shortest segments

These methods return the shortest segment connecting two geometric objects. Such segments can be used to give the direction of the derivative of the distance between the two objects. The 0 point on the segment is in the first passed object and the 1 point is in the second.

Segment3D get_shortest_segment (const Segment3D &s, const Vector3D &p)
 
Segment3D get_shortest_segment (const Segment3D &sa, const Segment3D &sb)
 

3D Vectors

We provide a specialization of VectorD for 3-space and several additional functions on it.

Vector3D get_vector_product (const Vector3D &p1, const Vector3D &p2)
 Returns the vector product (cross product) of two vectors. More...
 
Vector3D get_orthogonal_vector (const Vector3D &v)
 Return a vector that is perpendicular to the given vector. More...
 
Vector3D get_centroid (const Vector3Ds &ps)
 Returns the centroid of a set of vectors. More...
 
double get_radius_of_gyration (const Vector3Ds &ps)
 Return the radius of gyration of a set of points. More...
 

Vector Generators

These functions generate vector objects. Some of the methods, those with random in their name, generate a single vector chosen uniformly from the specified domain. Others, the cover methods, generate a set of points distributed (somewhat) evenly over the domain.

template<int D>
VectorD< D > get_random_vector_in (const BoundingBoxD< D > &bb)
 Generate a random vector in a box with uniform density. More...
 
template<int D>
VectorD< D > get_random_vector_on (const BoundingBoxD< D > &bb)
 Generate a random vector on a box with uniform density. More...
 
template<int D>
VectorD< D > get_random_vector_in (const SphereD< D > &s)
 Generate a random vector in a sphere with uniform density. More...
 
VectorD< 2 > get_random_vector_in (const SphereD< 2 > &s)
 
Vector3D get_random_vector_in (const Cylinder3D &c)
 Generate a random vector in a cylinder with uniform density. More...
 
template<int D>
VectorD< D > get_random_vector_on (const SphereD< D > &s)
 Generate a random vector on a sphere with uniform density. More...
 
template<int D>
base::Vector< VectorD< D > > get_uniform_surface_cover (const SphereD< D > &s, unsigned int n)
 Generate a set of vectors which covers a sphere uniformly. More...
 
Vector3Ds get_uniform_surface_cover (const Cylinder3D &cyl, int number_of_points)
 Generate a set of 3d points that uniformly cover a cylinder. More...
 
template<int D>
base::Vector< VectorD< D > > get_uniform_upper_hemisphere_cover (const SphereD< D > &s, unsigned int n)
 Generate a set of 3D points that uniformly cover a hemisphere. More...
 
Vector3Ds get_grid_surface_cover (const Cylinder3D &cyl, int number_of_cycles, int number_of_points_on_cycle)
 Generate a grid of 3d points on a cylinder surface. More...
 
Vector3Ds get_uniform_surface_cover (const SpherePatch3D &sph, unsigned int number_of_points)
 Generate a set of 3d points that uniformly cover a patch of a sphere. More...
 
Vector3Ds get_uniform_surface_cover (const Cone3D &cone, unsigned int number_of_points)
 
template<int D>
base::Vector< VectorD< D > > get_grid_interior_cover_by_spacing (const BoundingBoxD< D > &bb, double s)
 
Vector3Ds get_random_chain (unsigned int n, double r, const Vector3D &start=Vector3D(0, 0, 0), const Sphere3Ds &obstacles=Sphere3Ds())
 Generate a random chain with no collisions. More...
 

Norms

We define a number of standard, \(L^p\), norms on VectorD.

  • \(L^1\) is the Manhattan distance, the sum of the components
  • \(L^2\) is the standard Euclidean length
  • \(L^{\inf}\) is the maximum of the components
template<int D>
double get_l2_norm (const VectorD< D > &v)
 
template<int D>
double get_l1_norm (const VectorD< D > &v)
 
template<int D>
double get_linf_norm (const VectorD< D > &v)
 

Typedef Documentation

Typedef for python.

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of BoundingBox1D .

Definition at line 160 of file BoundingBoxD.h.

Typedef for python.

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of BoundingBox2D .

Definition at line 160 of file BoundingBoxD.h.

Typedef for python.

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of BoundingBox3D .

Definition at line 160 of file BoundingBoxD.h.

Typedef for python.

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of BoundingBox4D .

Definition at line 160 of file BoundingBoxD.h.

Typedef for python.

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of BoundingBox5D .

Definition at line 160 of file BoundingBoxD.h.

Typedef for python.

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of BoundingBox6D .

Definition at line 160 of file BoundingBoxD.h.

Typedef for python.

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of BoundingBoxKD .

Definition at line 160 of file BoundingBoxD.h.

Pass or store a set of Cone3D .

Definition at line 61 of file Cone3D.h.

Pass or store a set of Cylinder3D .

Definition at line 76 of file Cylinder3D.h.

typedef Grid3D<double, DenseGridStorage3D<double> > IMP::algebra::DenseDoubleGrid3D

A grid of doubles over a region of space.

Definition at line 91 of file algebra/python_only.h.

typedef Grid3D<float, DenseGridStorage3D<float> > IMP::algebra::DenseFloatGrid3D

A grid of floats over a region of space.

Definition at line 94 of file algebra/python_only.h.

Pass or store a set of Ellipsoid3D .

Definition at line 61 of file Ellipsoid3D.h.

Pass or store a set of FixedXYZ .

Definition at line 415 of file Rotation3D.h.

Pass or store a set of LinearFit2D .

Definition at line 52 of file LinearFit.h.

Pass or store a set of ParabolicFit2D .

Definition at line 55 of file ParabolicFit.h.

Pass or store a set of Plane3D .

Definition at line 83 of file Plane3D.h.

Pass or store a set of ReferenceFrame3D .

Definition at line 80 of file ReferenceFrame3D.h.

Pass or store a set of Reflection3D .

Definition at line 34 of file Reflection3D.h.

Pass or store a set of Rotation2D .

Definition at line 111 of file Rotation2D.h.

Pass or store a set of Rotation3D .

Definition at line 216 of file Rotation3D.h.

Pass or store a set of Segment3D .

Definition at line 51 of file Segment3D.h.

typedef Grid3D<int, SparseGridStorage3D<int, BoundedGridStorage3D> > IMP::algebra::SparseIntGrid3D

A sparse grid of integers over a bounded region of space.

Definition at line 84 of file algebra/python_only.h.

typedef Grid3D<int, SparseGridStorage3D<int, UnboundedGridStorage3D> > IMP::algebra::SparseUnboundedIntGrid3D

A sparse grid of integers over all of space.

Definition at line 88 of file algebra/python_only.h.

Typedef for python.

Definition at line 89 of file SphereD.h.

Pass or store a set of Sphere1D .

Definition at line 89 of file SphereD.h.

Typedef for python.

Definition at line 89 of file SphereD.h.

Pass or store a set of Sphere2D .

Definition at line 89 of file SphereD.h.

Typedef for python.

Definition at line 89 of file SphereD.h.

Pass or store a set of Sphere3D .

Definition at line 89 of file SphereD.h.

Typedef for python.

Definition at line 89 of file SphereD.h.

Pass or store a set of Sphere4D .

Definition at line 89 of file SphereD.h.

Typedef for python.

Definition at line 89 of file SphereD.h.

Pass or store a set of Sphere5D .

Definition at line 89 of file SphereD.h.

Typedef for python.

Definition at line 89 of file SphereD.h.

Pass or store a set of Sphere6D .

Definition at line 89 of file SphereD.h.

Typedef for python.

Definition at line 89 of file SphereD.h.

Pass or store a set of SphereKD .

Definition at line 89 of file SphereD.h.

Pass or store a set of SpherePatch3D .

Definition at line 50 of file SpherePatch3D.h.

Pass or store a set of SphericalVector3D .

Definition at line 80 of file SphericalVector3D.h.

Pass or store a set of Transformation2D .

Definition at line 117 of file Transformation2D.h.

Pass or store a set of Transformation3D .

Definition at line 85 of file Transformation3D.h.

Pass or store a set of Triangle3D .

Definition at line 41 of file Triangle3D.h.

1D vector typedef for swig

Definition at line 579 of file VectorD.h.

1D vectors typedef for swig

Definition at line 581 of file VectorD.h.

2D vector typedef for swig

Definition at line 583 of file VectorD.h.

2D vectors typedef for swig

Definition at line 585 of file VectorD.h.

3D vector typedef for swig

Definition at line 587 of file VectorD.h.

3D vectors typedef for swig

Definition at line 589 of file VectorD.h.

4D vector typedef for swig

Definition at line 591 of file VectorD.h.

4D vectors typedef for swig

Definition at line 593 of file VectorD.h.

5D vector typedef for swig

Definition at line 595 of file VectorD.h.

5D vectors typedef for swig

Definition at line 597 of file VectorD.h.

6D vector typedef for swig

Definition at line 599 of file VectorD.h.

6D vector typedef for swig

Definition at line 601 of file VectorD.h.

Typedef for python.

Definition at line 668 of file VectorD.h.

Typedef for python.

Definition at line 670 of file VectorD.h.

Typedef for python.

Definition at line 672 of file VectorD.h.

Typedef for python.

Definition at line 674 of file VectorD.h.

Typedef for python.

Definition at line 676 of file VectorD.h.

Typedef for python.

Definition at line 678 of file VectorD.h.

Typedef for python.

Definition at line 680 of file VectorD.h.

Typedef for python.

Definition at line 682 of file VectorD.h.

Typedef for python.

Definition at line 684 of file VectorD.h.

Typedef for python.

Definition at line 686 of file VectorD.h.

Typedef for python.

Definition at line 688 of file VectorD.h.

Typedef for python.

Definition at line 690 of file VectorD.h.

Typedef for python.

Definition at line 692 of file VectorD.h.

Typedef for python.

Definition at line 694 of file VectorD.h.

KD vector typedef for swig

Definition at line 603 of file VectorD.h.

Store a set of objects.

Definition at line 32 of file vector_metrics.h.

Pass a \ set of \ objects. \ See \ VectorKDMetric

Definition at line 32 of file vector_metrics.h.

KD vectors typedef for swig

Definition at line 605 of file VectorD.h.

Function Documentation

template<int D>
int IMP::algebra::compare ( const VectorD< D > &  a,
const VectorD< D > &  b 
)

Note that this is not very reliable and probably should not be used. See VectorD

Definition at line 371 of file VectorD.h.

Rotation2D IMP::algebra::compose ( const Rotation2D &  a,
const Rotation2D &  b 
)

For any vector v (a*b)*v = a*(b*v).

Definition at line 105 of file Rotation2D.h.

+ Here is the call graph for this function:

Transformation3D IMP::algebra::compose ( const Transformation3D &  a,
const Transformation3D &  b 
)

For any vector v (a*b)*v = a*(b*v). See Transformation3D

Definition at line 109 of file Transformation3D.h.

+ Here is the call graph for this function:

Transformation2D IMP::algebra::compose ( const Transformation2D &  a,
const Transformation2D &  b 
)

For any vector v (a*b)*v = a*(b*v). See Transformation2D

Definition at line 144 of file Transformation2D.h.

+ Here is the call graph for this function:

Rotation3D IMP::algebra::compose ( const Rotation3D &  a,
const Rotation3D &  b 
)

See Rotation3D

Definition at line 333 of file Rotation3D.h.

Transformation3Ds IMP::algebra::get_alignments_from_first_to_second ( const PrincipalComponentAnalysisD< 3 > &  pca1,
const PrincipalComponentAnalysisD< 3 > &  pca2 
)

Get all possible alignments of the first principal component system to the second one

bool IMP::algebra::get_are_almost_equal ( const double  a,
const double  b,
const double  epsilon 
)

epsilon is the tolerance allowed to consider the values as equal

Definition at line 108 of file algebra/utility.h.

double IMP::algebra::get_area ( const SpherePatch3D &  g)

See SpherePatch3D

Definition at line 50 of file SpherePatch3D.h.

double IMP::algebra::get_area ( const Plane3D &  g)

See Plane3D

Definition at line 83 of file Plane3D.h.

std::pair<Vector3D, double> IMP::algebra::get_axis_and_angle ( const Rotation3D &  rot)
Note
http://en.wikipedia.org/wiki/Rotation_matrix
www.euclideanspace.com/maths/geometry/rotations/conversions/ angleToQuaternion/index.htm See Rotation3D
Returns
axis direction and rotation about the axis in Radians
double IMP::algebra::get_ball_radius_from_volume_3d ( double  volume)

See Sphere3D

Definition at line 35 of file Sphere3D.h.

template<int D>
VectorD<D> IMP::algebra::get_basis_vector_d ( unsigned int  coordinate)

Return the unit vector pointing in the direction of the requested coordinate. That is

get_basis_vector_d<3>(2)== Vector3D(0,0,1);

See VectorD

Definition at line 414 of file VectorD.h.

BoundingBoxD<3> IMP::algebra::get_bounding_box ( const SpherePatch3D &  g)

See SpherePatch3D

Definition at line 50 of file SpherePatch3D.h.

BoundingBoxD<3> IMP::algebra::get_bounding_box ( const Segment3D &  g)

See Segment3D

Definition at line 51 of file Segment3D.h.

BoundingBoxD<3> IMP::algebra::get_bounding_box ( const Ellipsoid3D &  g)

See Ellipsoid3D

Definition at line 61 of file Ellipsoid3D.h.

BoundingBoxD<3> IMP::algebra::get_bounding_box ( const Cone3D &  g)

See Cone3D

Definition at line 61 of file Cone3D.h.

BoundingBoxD<3> IMP::algebra::get_bounding_box ( const Cylinder3D &  g)

See Cylinder3D

Definition at line 76 of file Cylinder3D.h.

BoundingBoxD<3> IMP::algebra::get_bounding_box ( const Plane3D &  g)

See Plane3D

Definition at line 83 of file Plane3D.h.

template<int D>
BoundingBoxD<D> IMP::algebra::get_bounding_box ( const SphereD< D > &  g)

See Sphere

Definition at line 89 of file SphereD.h.

template<int D>
BoundingBoxD<D> IMP::algebra::get_bounding_box ( const BoundingBoxD< D > &  g)

See BoundingBox

Definition at line 160 of file BoundingBoxD.h.

template<int D>
const BoundingBoxD<D>& IMP::algebra::get_bounding_box_d_geometry ( const BoundingBoxD< D > &  g)

See BoundingBox

Definition at line 160 of file BoundingBoxD.h.

Vector3D IMP::algebra::get_centroid ( const Vector3Ds &  ps)

See Vector3D

Definition at line 56 of file Vector3D.h.

const Cone3D& IMP::algebra::get_cone_3d_geometry ( const Cone3D &  g)

See Cone3D

Definition at line 61 of file Cone3D.h.

template<unsigned int D>
BoundingBoxD<D> IMP::algebra::get_cube_d ( double  radius)

See BoundingBoxD

Definition at line 178 of file BoundingBoxD.h.

BoundingBoxD<-1> IMP::algebra::get_cube_kd ( unsigned int  d,
double  radius 
)

See BoundingBoxD

Definition at line 185 of file BoundingBoxD.h.

+ Here is the call graph for this function:

const Cylinder3D& IMP::algebra::get_cylinder_3d_geometry ( const Cylinder3D &  g)

See Cylinder3D

Definition at line 76 of file Cylinder3D.h.

std::string IMP::algebra::get_data_path ( std::string  file_name)

Each module has its own data directory, so be sure to use the version of this function in the correct module. To read the data file "data_library" that was placed in the data directory of module "mymodule", do something like

std::ifstream in(IMP::mymodule::get_data_path("data_library"));

This will ensure that the code works when IMP is installed or used via the setup_environment.sh script.

double IMP::algebra::get_distance ( const Segment3D &  s,
const Vector3D &  p 
)

See Segment3D

double IMP::algebra::get_distance ( const Plane3D &  pln,
const Vector3D &  p 
)

See Plane3D

Definition at line 68 of file Plane3D.h.

double IMP::algebra::get_distance ( const Segment3D &  a,
const Segment3D &  b 
)

See Segment3D

template<int D>
double IMP::algebra::get_distance ( const SphereD< D > &  a,
const SphereD< D > &  b 
)

If they intersect, the distances are not meaningful. See SphereD

Definition at line 105 of file SphereD.h.

double IMP::algebra::get_distance ( const Rotation3D &  r0,
const Rotation3D &  r1 
)

The distance runs between 0 and 1. More precisely, the distance returned is distance between the two quaternion vectors properly normalized, divided by sqrt(2).

A vector with distance d from the unit vector represents a rotation of

\( \theta= \cos^{-1}\left(1-\sqrt{2}d\right)\) See Rotation3D

Definition at line 234 of file Rotation3D.h.

+ Here is the call graph for this function:

template<int D>
double IMP::algebra::get_distance ( const VectorD< D > &  v1,
const VectorD< D > &  v2 
)

See VectorD

Definition at line 401 of file VectorD.h.

+ Here is the call graph for this function:

IntPairs IMP::algebra::get_edges ( const BoundingBoxD< 3 > &  )

See BoundingBoxD

Definition at line 271 of file BoundingBoxD.h.

template<int D>
VectorD<D> IMP::algebra::get_elementwise_product ( const algebra::VectorD< D > &  a,
const algebra::VectorD< D > &  b 
)

See VectorD Return the vector that is the elementwise product of the two.

Definition at line 622 of file VectorD.h.

template<int D>
VectorD<D> IMP::algebra::get_elementwise_product ( const Ints &  a,
const algebra::VectorD< D > &  b 
)

See VectorD Return the vector that is the elementwise product of the two.

Definition at line 635 of file VectorD.h.

const Ellipsoid3D& IMP::algebra::get_ellipsoid_3d_geometry ( const Ellipsoid3D &  g)

See Ellipsoid3D

Definition at line 61 of file Ellipsoid3D.h.

Sphere3D IMP::algebra::get_enclosing_sphere ( const Sphere3Ds &  ss)

See Sphere3D

Note
This method produces tighter bounding spheres if CGAL is used.
Sphere3D IMP::algebra::get_enclosing_sphere ( const Vector3Ds &  ss)

See Sphere3D See Vector3D

Note
This method produces tighter bounding spheres if CGAL is used.
std::string IMP::algebra::get_example_path ( std::string  file_name)

Each module has its own example directory, so be sure to use the version of this function in the correct module. For example to read the file example_protein.pdb located in the examples directory of the IMP::atom module, do

model));

This will ensure that the code works when IMP is installed or used via the setup_environment.sh script.

FixedXYZ IMP::algebra::get_fixed_xyz_from_rotation ( const Rotation3D &  r)
See Also
rotation_from_fixed_xyz() See Rotation3D See FixesXYZ
template<int D>
base::Vector<VectorD<D> > IMP::algebra::get_grid_interior_cover_by_spacing ( const BoundingBoxD< D > &  bb,
double  s 
)

Cover the interior of the bounding box by equal sized parallelograms of approximately full-width s, returning the list of centers of the cubes.

Definition at line 161 of file vector_generators.h.

+ Here is the call graph for this function:

Vector3Ds IMP::algebra::get_grid_surface_cover ( const Cylinder3D &  cyl,
int  number_of_cycles,
int  number_of_points_on_cycle 
)

See Vector3D See Cylinder3D

Rotation3D IMP::algebra::get_identity_rotation_3d ( )

See Rotation3D

Definition at line 220 of file Rotation3D.h.

Transformation2D IMP::algebra::get_identity_transformation_2d ( )

See Transformation2D

Definition at line 123 of file Transformation2D.h.

+ Here is the call graph for this function:

Transformation3D IMP::algebra::get_identity_transformation_3d ( )

See Transformation3D

Definition at line 89 of file Transformation3D.h.

+ Here is the call graph for this function:

template<int D>
bool IMP::algebra::get_interiors_intersect ( const SphereD< D > &  a,
const SphereD< D > &  b 
)

See SphereD

Definition at line 125 of file SphereD.h.

+ Here is the call graph for this function:

template<int D>
bool IMP::algebra::get_interiors_intersect ( const BoundingBoxD< D > &  a,
const BoundingBoxD< D > &  b 
)

See BoundingBoxD

Definition at line 193 of file BoundingBoxD.h.

+ Here is the call graph for this function:

Rotation3D IMP::algebra::get_interpolated ( const Rotation3D &  a,
const Rotation3D &  b,
double  f 
)

It f ==0, return b, if f==1 return a. See Rotation3D

Definition at line 430 of file Rotation3D.h.

+ Here is the call graph for this function:

template<int D>
BoundingBoxD<D> IMP::algebra::get_intersection ( const BoundingBoxD< D > &  a,
const BoundingBoxD< D > &  b 
)

See BoundingBoxD

Definition at line 207 of file BoundingBoxD.h.

+ Here is the call graph for this function:

Triangle3D IMP::algebra::get_largest_triangle ( const Vector3Ds &  points)
template<int D, class Storage , class Value , class Embedding >
Value IMP::algebra::get_linearly_interpolated ( const GridD< D, Storage, Value, Embedding > &  g,
const VectorD< D > &  pt 
)

Get the value from the grid with linear interpolation. Values outside the bounding box are snapped to the bounding box (effectively extending the boundary values out to infinity).

Definition at line 23 of file grid_utility.h.

template<int D>
double IMP::algebra::get_maximum_length ( const BoundingBoxD< D > &  a)

See BoundingBoxD

Definition at line 244 of file BoundingBoxD.h.

+ Here is the call graph for this function:

template<int D>
VectorD<-1 > IMP::algebra::get_ones_vector_kd ( unsigned int  Di,
double  v = 1 
)

Di must equal D.

Definition at line 481 of file VectorD.h.

Vector3D IMP::algebra::get_orthogonal_vector ( const Vector3D &  v)

Or, if you are Israeli, it is a vertical vector. See Vector3D

Definition at line 39 of file Vector3D.h.

const Plane3D& IMP::algebra::get_plane_3d_geometry ( const Plane3D &  g)

See Plane3D

Definition at line 83 of file Plane3D.h.

template<int D>
double IMP::algebra::get_power_distance ( const SphereD< D > &  a,
const SphereD< D > &  b 
)

The power distance is the square of the distance between the centers minus the sum of the square of the radii. See SphereD

Definition at line 116 of file SphereD.h.

template<int D>
PrincipalComponentAnalysisD<D> IMP::algebra::get_principal_components ( const base::Vector< VectorD< D > > &  ps)

See PrincipalComponentAnalysis

Definition at line 108 of file eigen_analysis.h.

+ Here is the call graph for this function:

double IMP::algebra::get_radius_of_gyration ( const Vector3Ds &  ps)
See Also
IMP::atom::get_radius_of_gyration()

Definition at line 65 of file Vector3D.h.

+ Here is the call graph for this function:

Vector3Ds IMP::algebra::get_random_chain ( unsigned int  n,
double  r,
const Vector3D &  start = Vector3D(0, 0, 0),
const Sphere3Ds &  obstacles = Sphere3Ds() 
)

This function generates a random chain, starting at (0,0,0) with n particles each with radius r. Consecutive particles are approximately distance 2r apart and no pair of particles is closer than 2r.

If an obstacles parameter is provided then chain spheres also don't intersect the obstacle spheres.

Note
The current implementation is not very clever and can be made more clever if needed.
Transformation3D IMP::algebra::get_random_local_transformation ( Vector3D  origin,
double  max_translation = 5.,
double  max_angle_in_rad = 0.26 
)
Note
randomly select an axis that passes to the input point and rotate around it
Parameters
[in]originthe origin of the rotation
[in]max_translationdetault value is 5
[in]max_angle_in_raddefault value is 15 degree in radians
Rotation3D IMP::algebra::get_random_rotation_3d ( )
Rotation3D IMP::algebra::get_random_rotation_3d ( const Rotation3D &  center,
double  distance 
)

This method generates a rotation that is within the provided distance of center.

Parameters
[in]centerThe center of the rotational volume
[in]distanceSee get_distance(const Rotation3D&,const Rotation3D&) for a full definition.
Note
The cost of this operation increases as distance goes to 0.

See Rotation3D

template<int D>
VectorD<D> IMP::algebra::get_random_vector_in ( const BoundingBoxD< D > &  bb)

See BoundingBoxD See VectorD

Definition at line 39 of file vector_generators.h.

template<int D>
VectorD<D> IMP::algebra::get_random_vector_in ( const SphereD< D > &  s)

See VectorD See SphereD

Definition at line 57 of file vector_generators.h.

+ Here is the call graph for this function:

VectorD<2> IMP::algebra::get_random_vector_in ( const SphereD< 2 > &  s)

Generates a random vector in a circle with uniform density with respect to the area of the circle

Parameters
sa 2D sphere (circle)

See VectorD See SphereD

Vector3D IMP::algebra::get_random_vector_in ( const Cylinder3D &  c)
template<int D>
VectorD<D> IMP::algebra::get_random_vector_on ( const BoundingBoxD< D > &  bb)

See BoundingBoxD See VectorD

Definition at line 48 of file vector_generators.h.

template<int D>
VectorD<D> IMP::algebra::get_random_vector_on ( const SphereD< D > &  s)

See VectorD See SphereD

Definition at line 91 of file vector_generators.h.

+ Here is the call graph for this function:

double IMP::algebra::get_relative_projection_on_segment ( const Segment3D &  s,
const algebra::Vector3D &  p 
)

Returns f, the 'relative' projection of a point p onto the line that contains s. Formally, the projection of p onto the line through s is s[0]+f*(s[1]-s[0]) f is in the range [0..1] if the projection of p is inside s.

Parameters
ssegment in 3D
ppoint in 3D
Returns
the 'relative' project of p onto the line containing s
Rotation3D IMP::algebra::get_rotation_about_axis ( const Vector3D &  axis,
double  angle 
)
Parameters
[in]axisthe rotation axis passes through (0,0,0)
[in]anglethe rotation angle in radians in the clockwise direction
Note
http://en.wikipedia.org/wiki/Rotation_matrix
www.euclideanspace.com/maths/geometry/rotations/conversions/ angleToQuaternion/index.htm See Rotation3D
Rotation3D IMP::algebra::get_rotation_about_normalized_axis ( const Vector3D &  axis_norm,
double  angle 
)

Generate a Rotation3D object from a rotation around an axis that is assumed to be normalized

Parameters
[in]axis_normthe normalized rotation axis passing through (0,0,0)
[in]anglethe rotation angle in radians in the clockwise direction
Note
http://en.wikipedia.org/wiki/Rotation_matrix
www.euclideanspace.com/maths/geometry/rotations/conversions/ angleToQuaternion/index.htm See Rotation3D
Transformation3D IMP::algebra::get_rotation_about_point ( const Vector3D &  point,
const Rotation3D &  rotation 
)

Rotate about a point rather than the origin.

Parameters
[in]pointCenter to rotate about
[in]rotationThe rotation to perform

See Transformation3D

Definition at line 100 of file Transformation3D.h.

Transformation2D IMP::algebra::get_rotation_about_point ( const Vector2D &  point,
const Rotation2D &  rotation 
)

Generates a Transformation2D to rotate about a point rather than the origin.

Parameters
[in]pointCenter to rotate about
[in]rotationThe rotation to perform (defined taking the origin as reference, not the new point). See Transformation2D

Definition at line 135 of file Transformation2D.h.

+ Here is the call graph for this function:

Rotation3D IMP::algebra::get_rotation_from_fixed_xyz ( double  xr,
double  yr,
double  zr 
)
Parameters
[in]xrRotation around the X axis in radians
[in]yrRotation around the Y axis in radians
[in]zrRotation around the Z axis in radians
Note
The three rotations are represented in the original (fixed) coordinate frame. See Rotation3D See FixedXYZ
Rotation3D IMP::algebra::get_rotation_from_fixed_zxz ( double  phi,
double  theta,
double  psi 
)
Parameters
[in]phiRotation around the Z axis in radians
[in]thetaRotation around the X axis in radians
[in]psiRotation around the Z axis in radians
Note
The first rotation is by an angle phi about the z-axis. The second rotation is by an angle theta in [0,pi] about the former x-axis , and the third rotation is by an angle psi about the former z-axis. See Rotation3D
Rotation3D IMP::algebra::get_rotation_from_fixed_zyz ( double  Rot,
double  Tilt,
double  Psi 
)
Note
The first rotation is by an angle about the z-axis. The second rotation is by an angle about the new y-axis. The third rotation is by an angle about the new z-axis.
Parameters
[in]RotFirst Euler angle (radians) defining the rotation (Z axis)
[in]TiltSecond Euler angle (radians) defining the rotation (Y axis)
[in]PsiThird Euler angle (radians) defining the rotation (Z axis) See Rotation3D
Rotation3D IMP::algebra::get_rotation_from_matrix ( double  m00,
double  m01,
double  m02,
double  m10,
double  m11,
double  m12,
double  m20,
double  m21,
double  m22 
)
Rotation3D IMP::algebra::get_rotation_from_vector4d ( const VectorD< 4 > &  v)

See Rotation3D

Definition at line 326 of file Rotation3D.h.

+ Here is the call graph for this function:

Rotation3D IMP::algebra::get_rotation_from_x_y_axes ( const Vector3D &  x,
const Vector3D &  y 
)

Return the rotation which takes the native x and y axes to the given x and y axes. The two axis must be perpendicular unit vectors.

Rotation3D IMP::algebra::get_rotation_taking_first_to_second ( const Vector3D &  v1,
const Vector3D &  v2 
)
Rotation2D IMP::algebra::get_rotation_to_x_axis ( const Vector2D &  v)

Builds the rotation that transforms the vector X of the origin of coordinates into the given vector

Definition at line 97 of file Rotation2D.h.

template<typename T >
int IMP::algebra::get_rounded ( const T &  x)

The result is of type integer but the argument can be of any type. Some examples:

* a = round(-0.7); // a = -1
* a = round(-0.2); // a = 0
* a = round(0.2); // a = 0
* a = round(0.7); // a = 1
*

Definition at line 43 of file algebra/utility.h.

const Segment3D& IMP::algebra::get_segment_3d_geometry ( const Segment3D &  g)

See Segment3D

Definition at line 51 of file Segment3D.h.

Segment3D IMP::algebra::get_shortest_segment ( const Segment3D &  s,
const Vector3D &  p 
)

See Segment3D See Vector3D

Segment3D IMP::algebra::get_shortest_segment ( const Segment3D &  sa,
const Segment3D &  sb 
)

See Segment3D

template<int D>
const SphereD<D>& IMP::algebra::get_sphere_d_geometry ( const SphereD< D > &  g)

See Sphere

Definition at line 89 of file SphereD.h.

const SpherePatch3D& IMP::algebra::get_sphere_patch_3d_geometry ( const SpherePatch3D &  g)

See SpherePatch3D

Definition at line 50 of file SpherePatch3D.h.

template<int D>
double IMP::algebra::get_squared_distance ( const VectorD< D > &  v1,
const VectorD< D > &  v2 
)

See VectorD

Definition at line 393 of file VectorD.h.

double IMP::algebra::get_surface_area ( const Ellipsoid3D &  g)

See Ellipsoid3D

Definition at line 61 of file Ellipsoid3D.h.

double IMP::algebra::get_surface_area ( const Cone3D &  g)

See Cone3D

Definition at line 61 of file Cone3D.h.

double IMP::algebra::get_surface_area ( const Cylinder3D &  g)

See Cylinder3D

Definition at line 76 of file Cylinder3D.h.

double IMP::algebra::get_surface_area ( const SphereD< 3 > &  g)

See Sphere

Definition at line 89 of file SphereD.h.

double IMP::algebra::get_surface_area ( const BoundingBoxD< 3 > &  g)

See BoundingBox

Definition at line 160 of file BoundingBoxD.h.

FloatPair IMP::algebra::get_surface_area_and_volume ( const algebra::Sphere3Ds &  ss)

Return the surface area and volume of the union of the balls bounded by the spheres. This method requires CGAL to work.

Transformation3D IMP::algebra::get_transformation_3d ( const Transformation2D &  t2d)
Note
The 3D transformation is built with the 2D rotation becoming a rotation around the z axis.
template<class Vector3DsOrXYZs0 , class Vector3DsOrXYZs1 >
IMP::algebra::Transformation3D IMP::algebra::get_transformation_aligning_first_to_second ( const Vector3DsOrXYZs0 &  source,
const Vector3DsOrXYZs1 &  target 
)

The points are assumed to be corresponding (that is, from[0] is aligned to to[0] etc.). The alignment computed is that which minimized the sum of squared distances between corresponding points. Return the

\[ \textit{argmin}_T \sum \left|T\left(f\left[i\right]\right)-t[i]\right|^2 \]

If the point sets lie in a 1 or 2 dimensional subspace, the alignment algorithm is unstable and not guaranteed to work. A warning is printed in this case.

See generic geometry for more information.

See Transformation3D

See Also
Vector3D

Definition at line 43 of file geometric_alignment.h.

+ Here is the call graph for this function:

Transformation3D IMP::algebra::get_transformation_aligning_first_to_second ( Vector3Ds  a,
Vector3Ds  b 
)
Transformation2D IMP::algebra::get_transformation_aligning_pair ( const Vector2Ds &  set_from,
const Vector2Ds &  set_to 
)

Builds the transformation required to obtain a set of points from the first one

Note
The function assumes that the relative distances between points are conserved.
template<class Storage , class Embedding >
const Storage::Value IMP::algebra::get_trilinearly_interpolated ( const GridD< 3, Storage, typename Storage::Value, Embedding > &  g,
const Vector3D &  v,
const typename Storage::Value &  outside = 0 
)

The voxel values are assumed to be at the center of the voxel and the passed outside value is used for voxels outside the grid. The type Voxel must support get_linearly_interpolated().

See Also
get_linearly_interpolated() See GridD

Definition at line 40 of file grid_utility.h.

+ Here is the call graph for this function:

Rotation3Ds IMP::algebra::get_uniform_cover_rotations_3d ( unsigned int  num_points)

If you care about the distance between samples instead of the number of samples, the "surface area" of the set of rotations is pi^2. If you allocate each sample a volume of 4/3 pi d^3 (to space them d apart), Then you want 3/4 pi/d^3 points.

Creates at least num_points rotations.

template<int D>
base::Vector<VectorD<D> > IMP::algebra::get_uniform_surface_cover ( const SphereD< D > &  s,
unsigned int  n 
)

The function is currently pretty slow, especially in non-optimized builds. Complain if this bugs you. We might be able to do better, at least in 3D.

Creates at least the requested number of points.

Note
This predicates will produce guaranteed correct results if IMP.cgal is available (the results will be unreliable if it is not).

See VectorD See SphereD

Definition at line 107 of file vector_generators.h.

Vector3Ds IMP::algebra::get_uniform_surface_cover ( const Cylinder3D &  cyl,
int  number_of_points 
)
Vector3Ds IMP::algebra::get_uniform_surface_cover ( const SpherePatch3D &  sph,
unsigned int  number_of_points 
)
Note
the implementation can be improved See SpherePatch3D See VectorD
Vector3Ds IMP::algebra::get_uniform_surface_cover ( const Cone3D &  cone,
unsigned int  number_of_points 
)

See VectorD See Cone3D

template<int D>
base::Vector<VectorD<D> > IMP::algebra::get_uniform_upper_hemisphere_cover ( const SphereD< D > &  s,
unsigned int  n 
)

The points all lie on the upper hemisphere, eg, all their z coordinates are greater than those of the center of the sphere.

Definition at line 125 of file vector_generators.h.

algebra::Rotation3Ds IMP::algebra::get_uniformly_sampled_rotations ( double  delta)
Parameters
[in]deltasample every delta angles in radians.
template<int D>
BoundingBoxD<D> IMP::algebra::get_union ( BoundingBoxD< D >  a,
const BoundingBoxD< D > &  b 
)

This is the same as doing a+b. See BoundingBoxD

Definition at line 236 of file BoundingBoxD.h.

template<unsigned int D>
BoundingBoxD<D> IMP::algebra::get_unit_bounding_box_d ( )

See BoundingBoxD

Definition at line 165 of file BoundingBoxD.h.

BoundingBoxD<-1> IMP::algebra::get_unit_bounding_box_kd ( unsigned int  d)

See BoundingBoxD

Definition at line 171 of file BoundingBoxD.h.

+ Here is the call graph for this function:

template<int D>
const VectorD<D>& IMP::algebra::get_vector_d_geometry ( const VectorD< D > &  g)

See VectorD

Definition at line 609 of file VectorD.h.

Vector3D IMP::algebra::get_vector_product ( const Vector3D &  p1,
const Vector3D &  p2 
)

See Vector3D

Definition at line 31 of file Vector3D.h.

Vector3Ds IMP::algebra::get_vertices ( const BoundingBoxD< 3 > &  bb)

See BoundingBoxD

Definition at line 255 of file BoundingBoxD.h.

+ Here is the call graph for this function:

double IMP::algebra::get_volume ( const Cone3D &  g)

See Cone3D

Definition at line 61 of file Cone3D.h.

double IMP::algebra::get_volume ( const Ellipsoid3D &  g)

See Ellipsoid3D

Definition at line 61 of file Ellipsoid3D.h.

double IMP::algebra::get_volume ( const Cylinder3D &  g)

See Cylinder3D

Definition at line 76 of file Cylinder3D.h.

double IMP::algebra::get_volume ( const SphereD< 3 > &  g)

See Sphere

Definition at line 89 of file SphereD.h.

template<int D>
double IMP::algebra::get_volume ( const BoundingBoxD< D > &  bb)

See BoundingBoxD

Definition at line 147 of file BoundingBoxD.h.

+ Here is the call graph for this function:

double IMP::algebra::get_volume ( const BoundingBoxD< 3 > &  g)

See BoundingBox

Definition at line 160 of file BoundingBoxD.h.

template<int D>
VectorD<D> IMP::algebra::operator* ( double  s,
const VectorD< D > &  o 
)

See VectorD

Definition at line 385 of file VectorD.h.

Vector3Ds IMP::algebra::read_pts ( base::TextInput  input)
See Also
write_pts See VectorD
Sphere3Ds IMP::algebra::read_spheres ( base::TextInput  input)
See Also
write_pts See SphereD
void IMP::algebra::reversed_read ( void *  dest,
size_t  size,
size_t  nitems,
std::ifstream &  f,
bool  reverse 
)

If the reverse parameter is true, the data will be read in reverse order.

void IMP::algebra::reversed_write ( const void *  src,
size_t  size,
size_t  nitems,
std::ofstream &  f,
bool  reverse = false 
)

This function is the same as fread from C, but at the end there is a flag saying if data should be read in reverse order or not.

If the reverse parameter is true, the data will be written in reverse order.

template<int D>
void IMP::algebra::set_bounding_box_d_geometry ( BoundingBoxD< D > &  g,
const BoundingBoxD< D > &  v 
)

See BoundingBox

Definition at line 160 of file BoundingBoxD.h.

void IMP::algebra::set_cone_3d_geometry ( Cone3D &  g,
const Cone3D &  v 
)

See Cone3D

Definition at line 61 of file Cone3D.h.

void IMP::algebra::set_cylinder_3d_geometry ( Cylinder3D &  g,
const Cylinder3D &  v 
)

See Cylinder3D

Definition at line 76 of file Cylinder3D.h.

void IMP::algebra::set_ellipsoid_3d_geometry ( Ellipsoid3D &  g,
const Ellipsoid3D &  v 
)

See Ellipsoid3D

Definition at line 61 of file Ellipsoid3D.h.

void IMP::algebra::set_plane_3d_geometry ( Plane3D &  g,
const Plane3D &  v 
)

See Plane3D

Definition at line 83 of file Plane3D.h.

template<int D>
void IMP::algebra::set_sphere_d_geometry ( SphereD< D > &  g,
const SphereD< D > &  v 
)

See Sphere

Definition at line 89 of file SphereD.h.

void IMP::algebra::set_sphere_patch_3d_geometry ( SpherePatch3D &  g,
const SpherePatch3D &  v 
)

See SpherePatch3D

Definition at line 50 of file SpherePatch3D.h.

template<int D>
void IMP::algebra::set_vector_d_geometry ( VectorD< D > &  g,
const VectorD< D > &  v 
)

See VectorD

Definition at line 614 of file VectorD.h.

void IMP::algebra::write_pts ( const Vector3Ds &  vs,
base::TextOutput  out 
)
See Also
read_pts See VectorD
void IMP::algebra::write_spheres ( const Sphere3Ds &  vs,
base::TextOutput  out 
)
See Also
read_pts See SphereD