8 #ifndef IMPALGEBRA_SPHERICAL_VECTOR_3D_H 
    9 #define IMPALGEBRA_SPHERICAL_VECTOR_3D_H 
   11 #include <IMP/algebra/algebra_config.h> 
   17 #include <cereal/access.hpp> 
   20 IMPALGEBRA_BEGIN_NAMESPACE
 
   31   bool check(
double r, 
double theta, 
double psi) 
const;
 
   44                     bool apply_check = 
true) {
 
   46       if (!check(r, theta, psi)) {
 
   47         String msg = 
"SphericalCoords:: wrong SphericalCoords coordinates.";
 
   56   double operator[](
unsigned int i)
 const {
 
   57     IMP_USAGE_CHECK(i < 3, 
"Invalid component of SphericalCoords requested: " 
   62   double& operator[](
unsigned int i) {
 
   63     IMP_USAGE_CHECK(i < 3, 
"Invalid component of SphericalCoords requested: " 
   69   Vector3D get_cartesian_coordinates() 
const;
 
   75   void set_cartesian_coordinates(
const Vector3D& v);
 
   78   friend class cereal::access;
 
   80   template<
class Archive> 
void serialize(Archive &ar) {
 
   81     ar(v_[0], v_[1], v_[2]);
 
   87 IMPALGEBRA_END_NAMESPACE
 
Base class for geometric types. 
 
#define IMP_SHOWABLE_INLINE(Name, how_to_show)
Declare the methods needed by an object that can be printed. 
 
Exception definitions and assertions. 
 
A more IMP-like version of the std::vector. 
 
SphericalVector3D(const Vector3D &v)
Construct from a Cartesian coordinate vector. 
 
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values. 
 
Base class for geometric types. 
 
SphericalVector3D(double r, double theta, double psi, bool apply_check=true)
Construct from provided spherical coordinates. 
 
Various useful constants. 
 
Class to represent a 3D point in spherical coordinates. 
 
#define IMP_USAGE_CHECK(expr, message)
A runtime test for incorrect usage of a class or method. 
 
An exception for an invalid value being passed to IMP. 
 
std::string String
Basic string value. 
 
Macros to help with objects that can be printed to a stream.