File coor3d.hpp

This file contains definitions for coordinate vector types for different coordinate systems.

Author

Benjamin Lindner ben@benlabs.net

Version

See VERSION in CMakeLists.txt

Copyright

GNU General Public License

Typedefs

using cartrect = std::pair<CartesianCoor3D, CartesianCoor3D>

Functions

inline float sign(float a, float b)
CartesianCoor3D operator*(coor2_t lambda, const CartesianCoor3D &that)
CartesianCoor3D operator*(const CartesianCoor3D &that, coor2_t lambda)
CartesianCoor3D operator/(const CartesianCoor3D &that, coor2_t lambda)
CartesianCoor3D rotate(CartesianCoor3D, std::string axis, coor2_t rad)
ImagNum operator*(coor2_t lambda, const ImagNum &that)
ImagNum operator*(const ImagNum &that, coor2_t lambda)
ImagNum operator/(const ImagNum &that, coor2_t lambda)
ImagNum operator/(coor2_t lambda, const ImagNum &that)
class CartesianCoor3D
#include <coor3d.hpp>

Type class which represents coordinates in cartesian space.

Allows transformation into other coordinate representations and implements some basic linear algebra.

Public Functions

inline CartesianCoor3D()
inline CartesianCoor3D(coor2_t v1, coor2_t v2, coor2_t v3)
CartesianCoor3D(CylinderCoor3D cc)
CartesianCoor3D(SphericalCoor3D cc)
CartesianCoor3D(const CartesianCoor3D &that) = default
CartesianCoor3D(CartesianCoor3D &&that) = default
CartesianCoor3D &operator=(CartesianCoor3D &&that) = default
coor2_t length() const
CartesianCoor3D &operator=(const CartesianCoor3D &that)
CartesianCoor3D operator-(const CartesianCoor3D &that)
CartesianCoor3D operator+(const CartesianCoor3D &that)
CartesianCoor3D cross_product(const CartesianCoor3D &that)
coor2_t operator*(const CartesianCoor3D &that)
bool operator<(const CartesianCoor3D &that) const
~CartesianCoor3D() = default

Public Members

coor2_t x
coor2_t y
coor2_t z

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)

Friends

friend class boost::serialization::access
friend std::ostream &operator<<(std::ostream &os, const CartesianCoor3D &cc)
template<>
struct formatter<CartesianCoor3D>
#include <coor3d.hpp>

Public Functions

inline constexpr auto parse(format_parse_context &ctx) -> decltype(ctx.begin())
template<typename FormatContext>
inline auto format(const CartesianCoor3D &input, FormatContext &ctx) -> decltype(ctx.out())
class CylinderCoor3D
#include <coor3d.hpp>

Type class which represents coordinates in cylinder space.

Allows transformation into other coordinate representations and implements some basic linear algebra. Cylinder coords have a range:

  • r >= 0

  • 0 <= phi < 2 M_PI

Public Functions

inline CylinderCoor3D()
CylinderCoor3D(coor2_t v1, coor2_t v2, coor2_t v3)
explicit CylinderCoor3D(CartesianCoor3D cc)
explicit CylinderCoor3D(SphericalCoor3D cc)
CylinderCoor3D &operator=(const CylinderCoor3D &that)
CylinderCoor3D operator-(const CylinderCoor3D &that)
~CylinderCoor3D() = default

Public Members

coor2_t r
coor2_t phi
coor2_t z

Friends

friend std::ostream &operator<<(std::ostream &os, const CylinderCoor3D &cc)
class SphericalCoor3D
#include <coor3d.hpp>

Type class which represents coordinates in spherical space.

Allows transformation into other coordinate representations and implements some basic linear algebra.

Spherical coords have a range:

  • r >= 0

  • 0 <= phi < 2 M_PI

  • 0 <= theta < M_PI

Public Functions

SphericalCoor3D() = default
inline SphericalCoor3D(coor2_t v1, coor2_t v2, coor2_t v3)
SphericalCoor3D(CartesianCoor3D cc)
SphericalCoor3D(CylinderCoor3D cc)
SphericalCoor3D &operator=(const SphericalCoor3D &that)
SphericalCoor3D operator-(const SphericalCoor3D &that)
~SphericalCoor3D() = default

Public Members

coor2_t r = 0
coor2_t phi = 0
coor2_t theta = 0

Friends

friend std::ostream &operator<<(std::ostream &os, const SphericalCoor3D &cc)
class CartesianVectorBase
#include <coor3d.hpp>

Type class which represents a vector-space basis (3 orthonormal vectors) for cartesian coordinates. Can be constructed out of thin air or from partial vectors.

Public Functions

CartesianVectorBase() = default
explicit CartesianVectorBase(CartesianCoor3D axis)
inline auto get_base() const
CartesianCoor3D &operator[](size_t index)
CartesianCoor3D project(CartesianCoor3D vec)

Private Members

std::array<CartesianCoor3D, 3> base_
class ImagNum
#include <coor3d.hpp>

Public Functions

ImagNum() = default
inline ImagNum(coor2_t r, coor2_t i)
~ImagNum() = default
inline coor2_t length() const
ImagNum &operator=(const ImagNum &that)
ImagNum operator-(const ImagNum &that)
ImagNum operator+(const ImagNum &that)
ImagNum operator*(const ImagNum &that)

Public Members

coor2_t re = 0
coor2_t im = 0

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)

Friends

friend class boost::serialization::access
friend std::ostream &operator<<(std::ostream &os, const ImagNum &in)