STP_Feature.h
Go to the documentation of this file.
1 #ifndef _STP_FEATURE
2 #define _STP_FEATURE
3 
4 #pragma once
5 
6 #include <cstdlib>
7 #include <sch/Matrix/SCH_Types.h>
8 #include <sch/sch_api.h>
9 #include <vector>
10 namespace sch
11 {
12 typedef struct s_STP_VVR
13 {
14  s_STP_VVR();
15  s_STP_VVR(Scalar cosangle, const Vector3 & axis);
16  s_STP_VVR(const s_STP_VVR & vvr);
17 
18  bool isInside(const Vector3 & v) const;
19 
20  Scalar isInsidePrime(const Vector3 & v) const;
21 
22  Scalar isInsidePlane(const Vector3 & v) const;
23 
24  Scalar getDistance(const Vector3 & v) const;
25 
26  bool isSameLimit(const s_STP_VVR & vvr) const;
27 
28  s_STP_VVR & operator=(const s_STP_VVR & vvr);
29  bool operator==(const s_STP_VVR & vvr) const;
30 
31  template<class Archive>
32  void serialize(Archive & ar, const unsigned int /*version*/)
33  {
34  ar & m_axis & m_cosangle & m_outerSTP;
35  }
36 
40 } STP_VVR;
41 
49 typedef struct s_STN_VVR
50 {
51  s_STN_VVR();
52  s_STN_VVR(Scalar cosangle, const Vector3 & axis);
53  s_STN_VVR(const s_STN_VVR & vvr);
54 
55  bool isInside(const Vector3 & v) const;
56  Scalar getDistance(const Vector3 & v) const;
57 
58  bool isSameLimit(const s_STN_VVR & vvr) const;
59 
60  s_STN_VVR & operator=(const s_STN_VVR & vvr);
61  bool operator==(const s_STN_VVR & vvr) const;
62 
63  template<class Archive>
64  void serialize(Archive & ar, const unsigned int /*version*/)
65  {
66  ar & m_axis & m_cosangle & m_outerSTP;
67  }
68 
72 } STN_VVR;
73 
81 typedef struct s_STP_STBVData
82 {
83  template<class Archive>
84  void serialize(Archive & ar, const unsigned int /*version*/)
85  {
87  }
88 
89  std::vector<Point3> m_points;
90  std::vector<STN_VVR> m_VVRlimits;
91  std::vector<bool> m_reverse;
92  int m_BVID;
93 } STP_STBVData;
94 
96 {
100 };
101 
103 {
104 public:
105  SCH_API virtual ~STP_Feature(void);
106 
107  SCH_API virtual void print() const = 0;
108 
109  SCH_API virtual STP_Feature * clone() const = 0;
110 
111  SCH_API virtual Point3 support(const Vector3 & v) const = 0;
112 
113  SCH_API virtual bool isHere(const Vector3 & v) const = 0;
114  SCH_API virtual bool isHereFarthestNeighbour(const Vector3 & v) = 0;
115  SCH_API virtual bool isHereFarthestNeighbourPrime(const Vector3 & v) = 0;
116  SCH_API virtual bool isHereFirstNeighbour(const Vector3 & v) = 0;
117  SCH_API virtual bool isHereFirstNeighbourPrime(const Vector3 & v, int idp) = 0;
118  SCH_API virtual bool isHereHybrid(const Vector3 & v, int idp) = 0;
119  SCH_API virtual int getNextBV(unsigned int id) const = 0;
120  SCH_API virtual int getNextBVPrime() const = 0;
121 
122  template<class Archive>
123  void serialize(Archive & ar, const unsigned int /*version*/)
124  {
125  ar & m_nextBVPrime;
126  }
127 
128 protected:
129  STP_Feature(void);
130 
131 protected:
133 };
134 
136 } // namespace sch
137 #endif
sch::s_STP_VVR::m_cosangle
Scalar m_cosangle
Definition: STP_Feature.h:38
sch
Definition: CD_Pair.h:11
sch::s_STN_VVR
Definition: STP_Feature.h:49
sch::STP_Feature::isHereFirstNeighbour
virtual SCH_API bool isHereFirstNeighbour(const Vector3 &v)=0
sch::STP_Feature::m_nextBVPrime
int m_nextBVPrime
Definition: STP_Feature.h:132
SCH_API
#define SCH_API
Definition: sch_api.h:13
STP_Feature.hxx
sch::s_STN_VVR::operator=
s_STN_VVR & operator=(const s_STN_VVR &vvr)
sch::s_STN_VVR::isInside
bool isInside(const Vector3 &v) const
sch::s_STN_VVR::serialize
void serialize(Archive &ar, const unsigned int)
Definition: STP_Feature.h:64
sch::s_STN_VVR::m_outerSTP
int m_outerSTP
Definition: STP_Feature.h:71
sch::s_STP_STBVData::m_points
std::vector< Point3 > m_points
Definition: STP_Feature.h:89
sch::STP_VVR
struct sch::s_STP_VVR STP_VVR
sch::s_STP_STBVData::serialize
void serialize(Archive &ar, const unsigned int)
Definition: STP_Feature.h:84
sch::STP_Featuretype
STP_Featuretype
Definition: STP_Feature.h:95
SCH_Types.h
sch::TORUS
@ TORUS
Definition: STP_Feature.h:99
sch::STP_Feature::isHereHybrid
virtual SCH_API bool isHereHybrid(const Vector3 &v, int idp)=0
sch::s_STN_VVR::m_cosangle
Scalar m_cosangle
Definition: STP_Feature.h:70
sch::STP_Feature::clone
virtual SCH_API STP_Feature * clone() const =0
sch::s_STN_VVR::isSameLimit
bool isSameLimit(const s_STN_VVR &vvr) const
sch::s_STP_STBVData
Definition: STP_Feature.h:81
sch::s_STP_VVR::m_outerSTP
int m_outerSTP
Definition: STP_Feature.h:39
sch::s_STP_STBVData::m_VVRlimits
std::vector< STN_VVR > m_VVRlimits
Definition: STP_Feature.h:90
sch::s_STP_VVR
Definition: STP_Feature.h:12
sch::s_STP_VVR::isInside
bool isInside(const Vector3 &v) const
sch::STN_VVR
struct sch::s_STN_VVR STN_VVR
sch::STP_Feature::isHereFirstNeighbourPrime
virtual SCH_API bool isHereFirstNeighbourPrime(const Vector3 &v, int idp)=0
sch::BIGSPHERE
@ BIGSPHERE
Definition: STP_Feature.h:98
sch::STP_STBVData
struct sch::s_STP_STBVData STP_STBVData
sch::STP_Feature::isHereFarthestNeighbour
virtual SCH_API bool isHereFarthestNeighbour(const Vector3 &v)=0
sch::STP_Feature::getNextBV
virtual SCH_API int getNextBV(unsigned int id) const =0
sch::STP_Feature::getNextBVPrime
virtual SCH_API int getNextBVPrime() const =0
sch::s_STN_VVR::getDistance
Scalar getDistance(const Vector3 &v) const
sch::s_STP_STBVData::m_BVID
int m_BVID
Definition: STP_Feature.h:92
sch::STP_Feature::STP_Feature
STP_Feature(void)
sch::s_STP_VVR::isInsidePlane
Scalar isInsidePlane(const Vector3 &v) const
Definition: STP_Feature.hxx:6
sch::STP_Feature::print
virtual SCH_API void print() const =0
sch_api.h
sch::s_STP_VVR::serialize
void serialize(Archive &ar, const unsigned int)
Definition: STP_Feature.h:32
sch::s_STP_VVR::s_STP_VVR
s_STP_VVR()
sch::s_STP_VVR::isInsidePrime
Scalar isInsidePrime(const Vector3 &v) const
Definition: STP_Feature.hxx:1
sch::s_STP_VVR::getDistance
Scalar getDistance(const Vector3 &v) const
sch::STP_Feature::isHere
virtual SCH_API bool isHere(const Vector3 &v) const =0
sch::s_STP_VVR::operator=
s_STP_VVR & operator=(const s_STP_VVR &vvr)
sch::STP_Feature::isHereFarthestNeighbourPrime
virtual SCH_API bool isHereFarthestNeighbourPrime(const Vector3 &v)=0
sch::SMALLSPHERE
@ SMALLSPHERE
Definition: STP_Feature.h:97
sch::STP_Feature::~STP_Feature
virtual SCH_API ~STP_Feature(void)
CD_Matrix::Vector3T< Scalar, false >
sch::s_STN_VVR::operator==
bool operator==(const s_STN_VVR &vvr) const
sch::s_STP_VVR::operator==
bool operator==(const s_STP_VVR &vvr) const
sch::s_STP_VVR::isSameLimit
bool isSameLimit(const s_STP_VVR &vvr) const
sch::Scalar
double Scalar
Definition: SCH_Types.h:23
sch::STP_Feature::serialize
void serialize(Archive &ar, const unsigned int)
Definition: STP_Feature.h:123
sch::s_STP_VVR::m_axis
Vector3 m_axis
Definition: STP_Feature.h:37
sch::STP_Feature::support
virtual SCH_API Point3 support(const Vector3 &v) const =0
sch::s_STN_VVR::s_STN_VVR
s_STN_VVR()
sch::s_STN_VVR::m_axis
Vector3 m_axis
Definition: STP_Feature.h:69
sch::s_STP_STBVData::m_reverse
std::vector< bool > m_reverse
Definition: STP_Feature.h:91
sch::STP_Feature
Definition: STP_Feature.h:102