Scanframe Modular Application 0.1.0
Loading...
Searching...
No Matches
AxesCoord.h
Go to the documentation of this file.
1#pragma once
3#include <gmi/iface/global.h>
4#include <math/Types.h>
5
6namespace sf::gmi
7{
8
13{
14 public:
18 typedef double value_type;
19
25 static constexpr auto tolerance = std::numeric_limits<value_type>::epsilon() * 10.0;
26
31
35 AxesCoord(const AxesCoord& ac);
36
41
46 explicit AxesCoord(const std::string& s);
47
51 void clear();
52
58 void set(int axis_loc, value_type value);
59
64 void unset(int axis_loc);
65
71 bool isSet(int axis_loc) const;
72
78 value_type& getValue(int axis_loc);
79
85 value_type getValue(int axis_loc) const;
86
91 int getMap() const;
92
97 void setMap(int map);
98
102 std::string toString() const;
103
109 AxesCoord& fromString(const std::string& s) noexcept(false);
110
117
124
131
138
146 bool isEqual(const AxesCoord& ac, value_type tol = tolerance) const;
151 bool operator==(const AxesCoord& ac) const;
152
157 bool operator!=(const AxesCoord& ac) const;
158
165
172
179
186
190 enum ECompare : unsigned int
191 {
196 crEQUAL = 0,
200 crTHIS_EQUAL = 1,
204 crOTHER_EQUAL = 2,
208 crNOT_EQUAL = 3
209 };
210
219 ECompare compare(const AxesCoord& ac, const AxesCoord& tolerance) const;
220
228 ECompare compare(const AxesCoord& ac, const AxesCoord& tolerance, const AxisLocations& rad_unlimited) const;
229
235 AxesCoord& operator>>(int axis_loc);
236
242 AxisValue operator[](size_t axis_loc) const;
243
248 Vector3D getVector() const;
249
255 AxesCoord& setVector(const Vector3D& vect);
256
262 AxesCoord& offset(const Vector3D& ofs);
263
269 AxesCoord offsetBy(const Vector3D& ofs) const;
270
275
276 private:
280 TSet<int> _map;
284 value_type _data[alLastEntry];
285};
286
287}// namespace sf::gmi
288
289namespace sf
290{
291
298_GMI_FUNC std::ostream& operator<<(std::ostream& os, const gmi::AxesCoord& ac);
299
306_GMI_FUNC std::istream& operator>>(std::istream& is, gmi::AxesCoord& ac);
307
308}// namespace sf
Counted vector having additional methods and operators for ease of usage.
Definition TVector.h:25
All axis values in one structure accompanied by some handy manipulation methods.
Definition AxesCoord.h:13
void setMap(int map)
Sets the bitmap of axes.
double value_type
Type the axes values are stored in.
Definition AxesCoord.h:18
AxesCoord & operator>>(int axis_loc)
Unsets a axis value.
AxesCoord & offset(const Vector3D &ofs)
Adds an offset to the existing coordinate.
AxesCoord & operator-=(const AxisValue &av)
Subtracts the axis value to the current value in the coord.
AxesCoord & setVector(const Vector3D &vect)
Sets the 3D vector formed by the XYZ axis.
bool isEqual(const AxesCoord &ac, value_type tol=tolerance) const
Compares if the given coord is equal to this one. Comparing the mapped axes and also their values usi...
AxesCoord & operator=(const AxisValue &av)
Assign the axis value to the value in the coord but does not enable the value in the map.
void clear()
Clears all values in the coordinate.
bool operator==(const AxesCoord &ac) const
Compare equal operator using the default tolerance. Calls isEqual() under the hood.
AxesCoord(const std::string &s)
Constructor using a string containing the axis values.
ECompare compare(const AxesCoord &ac, const AxesCoord &tolerance, const AxisLocations &rad_unlimited) const
Same as above except the radial unlimited axes can be specified.
AxesCoord(const AxesCoord &ac)
Copy constructor.
AxesCoord & fromString(const std::string &s) noexcept(false)
Gets the vector value from the string representation formed like '(1.23,4.56,7.89)'....
std::string toString() const
Gets the string representation of the 2D vector formed like '(1.23,4.56)'.
AxesCoord & operator+=(const AxisValue &av)
Adds the axis value to the current value in the coord.
Vector3D getVector() const
Gets the 3D vector formed by the XYZ axis.
AxesCoord & operator=(const AxesCoord &ac)
Assignment operator.
AxesCoord offsetBy(const Vector3D &ofs) const
Adds an offset to the coordinate and returns the new formed coord.
AxesCoord & operator-=(const AxesCoord &ac)
Subtracts only axis values form axes set in this instance.
int getMap() const
Gets the bitmap of set axes.
value_type getValue(int axis_loc) const
Gets axis value of the passed axis.
TVector< AxesCoord > Vector
Type definition.
Definition AxesCoord.h:274
AxesCoord & operator|=(const AxesCoord &ac)
Operator which add the axes not yet set in this instance.
AxesCoord & operator+=(const AxesCoord &ac)
Adds only axis values form axes set in this instance.
bool isSet(int axis_loc) const
Returns true if value of location 'axis_loc' is available.
ECompare
Result of the compare function.
Definition AxesCoord.h:191
value_type & getValue(int axis_loc)
Returns the value in the array.
AxisValue operator[](size_t axis_loc) const
Assigns a specific axis value to this structure.
AxesCoord()
Default constructor.
void set(int axis_loc, value_type value)
Sets an axis value.
bool operator!=(const AxesCoord &ac) const
Compare unequal operator using the default tolerance. Calls isEqual() under the hood.
void unset(int axis_loc)
Unsets an axis value.
AxesCoord & operator&=(const AxesCoord &ac)
Operator which sets the axes already set in this instance.
AxesCoord & operator<<(const AxisValue &av)
Assign the axis value to the value in the coord and enables it in the map.
ECompare compare(const AxesCoord &ac, const AxesCoord &tolerance) const
Compares two coordinates using a second coordinate containing max differences. Tests only the values ...
Single position, speed or acceleration value of a specific axis.
Definition GmiTypes.h:174
#define _GMI_FUNC
Definition gmi/iface/global.h:34
#define _GMI_CLASS
Definition gmi/iface/global.h:35
Definition AxesCoord.h:7
TSet< EAxisLocation > AxisLocations
Bitmap set of axis locations.
Definition GmiTypes.h:141
@ alLastEntry
Last entry used in iterations.
Definition GmiTypes.h:131
Definition Application.h:10
_GII_FUNC std::istream & operator>>(std::istream &is, ResultData &)
Stream operator for setting up this instance with a setup std::string.
_GII_FUNC std::ostream & operator<<(std::ostream &os, const ResultData &)
Stream operator for the setup std::string.