3D Cartesian Domain

Specification

The 3D Cartesian domain (tracktable::domain::cartesian3d) concerns points in a flat 3D space. These points are located with respect to the origin. Unlike the terrestrial domain, there are no discontinuities or distinguished points apart from the origin.

Units

Position in 3D Cartesian space is denoted (x, y, z). You, the user, can decide what those axes mean. Without a tie to some underlying physical domain they are purely abstract. Distances in this space are measured in dimensionless units. Speed is measured in units per second.

Module Contents

class CartesianPoint3D : public tracktable::PointCartesian<3>

Bare point in flat 3D space

This class defines a point in 3D Euclidean space. Units have no real-world interpretation and (unlike the surface of the globe) space is isotropic.

Use this class instead of instantiating the PointCartesian template yourself.

Subclassed by tracktable::TrajectoryPoint< CartesianPoint3D >

Public Types

typedef PointCartesian<3> Superclass

Public Functions

inline CartesianPoint3D()

Create an uninitialized point

Assume that the coordinates will be initialized to garbage values when you use this constructor.

inline CartesianPoint3D(double x, double y, double z)

Initialize a point with x, y, z coordinates

The coordinates will be initialized to whatever values you specify.

Parameters:
  • x[in] X value to use for the point

  • y[in] Y value to use for the point

  • z[in] Z value to use for the point

inline CartesianPoint3D(CartesianPoint3D const &other)

Copy constructor: make this point like another

Parameters:

other[in] Point to make a copy of

inline CartesianPoint3D(Superclass const &other)

Initialize this point from its superclass

If you happen to have PointCartesian<3> instances sitting around, this is where you use them. This is more for the compiler’s benefit than the user’s.

Parameters:

other[in] Superclass to use as if it were a CartesianPoint3D

inline virtual ~CartesianPoint3D()

Empty destructor

All of our resources are on the stack. We don’t have any real work to do here.

inline CartesianPoint3D &operator=(CartesianPoint3D const &other)

Assignment operator

We delegate this explicitly to the superclass so that the compiler won’t try to do anything clever like copying pointers.

template<class Archive>
inline void serialize(Archive &ar, const unsigned int)
class CartesianTrajectoryPoint3D : public tracktable::TrajectoryPoint<CartesianPoint3D>

Trajectory point in flat 3D space

This class defines a point in 3D Euclidean space along with an object ID, timestamp and named properties. Units have no real-world interpretation and (unlike the surface of the globe) space is isotropic.

Use this class instead of instantiating the TrajectoryPoint template yourself.

Public Types

typedef TrajectoryPoint<CartesianPoint3D> Superclass

Public Functions

inline CartesianTrajectoryPoint3D()

Create an uninitialized point

Assume that the coordinates will be initialized to garbage values when you use this constructor. The object ID, timestamp and properties will all be empty.

inline CartesianTrajectoryPoint3D(double x, double y, double z)

Initialize a point with x, y, z coordinates

The coordinates will be initialized to whatever values you specify.

Parameters:
  • x[in] X value to use for the point

  • y[in] Y value to use for the point

  • z[in] Z value to use for the point

inline CartesianTrajectoryPoint3D(CartesianTrajectoryPoint3D const &other)

Copy constructor: make this point like another

Parameters:

other[in] Point to make a copy of

inline CartesianTrajectoryPoint3D(Superclass const &other)

Initialize this point from its superclass

If you happen to have TrajectoryPoint<PointCartesian<3>> instances sitting around, this is where you use them. This is more for the compiler’s benefit than the user’s.

Parameters:

other[in] Superclass to use as if it were a CartesianTrajectoryPoint3D

inline virtual ~CartesianTrajectoryPoint3D()

Empty destructor

All of our resources are on the stack. We don’t have any real work to do here.

inline CartesianTrajectoryPoint3D &operator=(CartesianTrajectoryPoint3D const &other)

Assignment operator

We delegate this explicitly to the superclass so that the compiler won’t try to do anything clever like copying pointers.

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

Serialize the points to an archive

Parameters:
  • ar[in] Archive to serialize to

  • version[in] Version of the archive