#ifndef POSITION3D_H
#define POSITION3D_H

#include <cmath>

/**
 * represents a 3D position (x,y,z)
 */
struct Position3D {

	/** x-position (in centimeter) */
	double xCM;

	/** y-position (in centimeter) */
	double yCM;

	/** floor number */
	int zNr;

	/** ctor */
	Position3D() : xCM(0), yCM(0), zNr(0) {;}

	/** ctor. x,y in centimeter, z = floor-number */
	Position3D(const double xCM, const double yCM, const int zNr) : xCM(xCM), yCM(yCM), zNr(zNr) {;}

	/** get the distance to the given position (in centimeter) */
	double getDistanceCM(const Position3D& p) const {
		const double dx = xCM - p.xCM;
		const double dy = yCM - p.yCM;
		const double dz = (zNr - p.zNr) * 300;			// 300 = average floor height (centimeter)
		return std::sqrt(dx*dx + dy*dy + dz*dz);
	}

};

#endif // POSITION3D_H
