ActiveLib
Loading...
Searching...
No Matches
XPoint.h
1
6#ifndef ACTIVE_GEOMETRY_X_POINT
7#define ACTIVE_GEOMETRY_X_POINT
8
9#include "Active/Geometry/XInfo.h"
10
11#include <array>
12
13namespace active::geometry {
14
25 class XPoint : public Point {
26 public:
27 friend class XList;
28
29 // MARK: - Types
30
31 enum Role {
32 target = 0,
33 blade
34 };
35
37 using Unique = std::unique_ptr<XPoint>;
39 using Shared = std::shared_ptr<XPoint>;
41 using Option = std::optional<XPoint>;
42
49 XPoint(const Point& source = Point(), Position oPos = Point::undefined,
50 Position bPos = Point::undefined);
51
56 Point* clonePtr() const { return new XPoint(*this); }
57
63 XPoint& operator= (const Point& source);
64
65 //Data access methods
71 auto getInfo(Role role) const { return m_info[role]; }
77 auto getPos(Role role) const { return m_info[role].pos; }
83 vertOption getVertex(Role role) const { return m_info[role].vertexIndex; }
89 partOption getPart(Role role) const { return m_info[role].partIndex; }
90
96 void setInfo(Role role, const XInfo& info) { m_info[role] = info; }
102 void setPos(Role role, Position pos) { m_info[role].pos = pos; }
108 void setVertex(Role role, vertOption vertexIndex) { m_info[role].vertexIndex = vertexIndex; }
114 void setPart(Role role, partOption partIndex) { m_info[role].partIndex = partIndex; }
118 void swapIntercept();
119
120 private:
121 std::array<XInfo, 2> m_info;
122 };
123
124}
125
126#endif //ACTIVE_GEOMETRY_X_POINT
Definition Point.h:36
Point()
Definition Point.cpp:22
Definition XInfo.h:33
Definition XList.h:24
Definition XPoint.h:25
vertOption getVertex(Role role) const
Definition XPoint.h:83
XPoint & operator=(const Point &source)
Definition XPoint.cpp:33
void setInfo(Role role, const XInfo &info)
Definition XPoint.h:96
void swapIntercept()
Definition XPoint.cpp:42
XPoint(const Point &source=Point(), Position oPos=Point::undefined, Position bPos=Point::undefined)
Definition XPoint.cpp:19
void setVertex(Role role, vertOption vertexIndex)
Definition XPoint.h:108
void setPart(Role role, partOption partIndex)
Definition XPoint.h:114
std::optional< XPoint > Option
Optional.
Definition XPoint.h:41
Point * clonePtr() const
Definition XPoint.h:56
std::unique_ptr< XPoint > Unique
Unique pointer.
Definition XPoint.h:37
auto getPos(Role role) const
Definition XPoint.h:77
partOption getPart(Role role) const
Definition XPoint.h:89
void setPos(Role role, Position pos)
Definition XPoint.h:102
std::shared_ptr< XPoint > Shared
Shared pointer.
Definition XPoint.h:39
auto getInfo(Role role) const
Definition XPoint.h:71
Definition Anchor2D.h:11
std::optional< vertex_index > vertOption
Optional vertex index (for an undefined or missing vertex index)
Definition Point.h:24
Position
Relative spatial position.
Definition Position.h:12
std::optional< part_index > partOption
Optional part index (for an undefined or missing part index)
Definition Point.h:28