Store a vector of Cartesian coordinates. It supports all expected mathematical operators, including using * for the dot product.
Public Types | |
typedef const double * | CoordinateConstIterator |
typedef double * | CoordinateIterator |
Public Member Functions | |
CoordinateConstIterator | coordinates_begin () const |
CoordinateIterator | coordinates_begin () |
CoordinateConstIterator | coordinates_end () const |
CoordinateIterator | coordinates_end () |
double | get_magnitude () const |
double | get_scalar_product (const VectorD< D > &o) const |
double | get_squared_magnitude () const |
VectorD | get_unit_vector () const |
double & | operator[] (unsigned int i) |
double | operator[] (unsigned int i) const |
VectorD () | |
Default constructor. | |
VectorD (double x0, double x1, double x2, double x3) | |
Initialize a 4-vector from separate w,x,y,z values. | |
VectorD (double x, double y, double z) | |
Initialize a 3-vector from separate x,y,z values. | |
VectorD (double x, double y) | |
Initialize a 2-vector from separate x,y values. | |
VectorD (double x) | |
Initialize the 1-vector from its value. | |
template<class It > | |
VectorD (It b, It e) | |
Related Functions | |
(Note that these are not member functions.) | |
template<unsigned int D> | |
int | compare (const VectorD< D > &a, const VectorD< D > &b) |
lexicographic comparison of two vectors | |
template<unsigned int D> | |
VectorD< D > | get_basis_vector_d (unsigned int coordinate) |
Return the basis vector for the given coordinate. | |
template<unsigned int D> | |
double | get_distance (const VectorD< D > &v1, const VectorD< D > &v2) |
compute the distance between two vectors | |
SphereD< 3 > | get_enclosing_sphere (const std::vector< VectorD< 3 > > &ss) |
Return a sphere containing the listed spheres. | |
template<unsigned int D> | |
double | get_squared_distance (const VectorD< D > &v1, const VectorD< D > &v2) |
compute the squared distance between two vectors | |
template<unsigned int D> | |
VectorD< D > | operator* (double s, const VectorD< D > &o) |
3D Vectors | |
VectorD< 3 > | get_centroid (const std::vector< VectorD< 3 > > &ps) |
Returns the centroid of a set of vectors. | |
VectorD< 3 > | get_orthogonal_vector (const VectorD< 3 > &v) |
Return a vector that is perpendicular to the given vector. | |
VectorD< 3 > | get_vector_product (const VectorD< 3 > &p1, const VectorD< 3 > &p2) |
Returns the vector product (cross product) of two vectors. | |
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<unsigned int D> | |
VectorD< D > | get_random_vector_in (const BoundingBoxD< D > &bb) |
Generate a random vector in a box with uniform density. | |
template<unsigned int D> | |
VectorD< D > | get_random_vector_on (const BoundingBoxD< D > &bb) |
Generate a random vector on a box with uniform density. | |
std::vector< VectorD< 3 > > | 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. | |
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 VectorD< 3 > &p) |
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. | |
std::vector< VectorD< 3 > > | read_pts (TextInput in) |
Read a set of 3D vectors from a file. | |
void | write_pts (const std::vector< VectorD< 3 > > &vs, TextOutput out) |
Write a set of 3D vectors to a file. |
The distance between b and e must be equal to D.
double& IMP::algebra::VectorD< D >::operator[] | ( | unsigned int | i | ) |
Return the ith Cartesian coordinate. In 3D use [0] to get the x coordinate etc.
double IMP::algebra::VectorD< D >::operator[] | ( | unsigned int | i | ) | const |
Return the ith Cartesian coordinate. In 3D use [0] to get the x coordinate etc.
VectorD< D > get_basis_vector_d | ( | unsigned int | coordinate | ) | [related] |
Return the basis vector for the given coordinate.
Return the unit vector pointing in the direction of the requested coordinate. That is
get_basis_vector_d<3>(2)== VectorD<3>(0,0,1);
VectorD< 3 > get_centroid | ( | const std::vector< VectorD< 3 > > & | ps | ) | [related] |
Returns the centroid of a set of vectors.
<3>
SphereD< 3 > get_enclosing_sphere | ( | const std::vector< VectorD< 3 > > & | ss | ) | [related] |
Return a sphere containing the listed spheres.
<3> <3>
Return a vector that is perpendicular to the given vector.
Or, if you are Israeli, it is a vertical vector. <3>
Segment3D get_shortest_segment | ( | const Segment3D & | s, | |
const VectorD< 3 > & | p | |||
) | [related] |
<3>
std::vector< VectorD< 3 > > get_uniform_surface_cover | ( | const SpherePatch3D & | sph, | |
unsigned int | number_of_points | |||
) | [related] |
Generate a set of 3d points that uniformly cover a patch of a sphere.
VectorD< 3 > get_vector_product | ( | const VectorD< 3 > & | p1, | |
const VectorD< 3 > & | p2 | |||
) | [related] |
Returns the vector product (cross product) of two vectors.
<3>
void write_pts | ( | const std::vector< VectorD< 3 > > & | vs, | |
TextOutput | out | |||
) | [related] |