STP_Torus.h
Go to the documentation of this file.
1 #ifndef _STP_TORUS
2 #define _STP_TORUS
3 
4 #pragma once
6 #include <sch/sch_api.h>
7 
8 #ifdef WITH_BOOST_1_36
10 #endif
11 #include <boost/serialization/base_object.hpp>
12 
13 namespace sch
14 {
22 typedef struct s_STP_Circle
23 {
27 
28  bool operator==(const s_STP_Circle & c) const
29  {
30  return m_normal == c.m_normal && m_center == c.m_center && m_radius == c.m_radius;
31  }
32 
33  template<class Archive>
34  void serialize(Archive & ar, const unsigned int /*version*/)
35  {
36  ar & m_normal & m_center & m_radius;
37  }
38 
39  s_STP_Circle(const Vector3 & normal, const Point3 & center, Scalar radius);
41 } STP_Circle;
42 
51 class STP_Torus : public STP_Feature
52 {
53 public:
55  SCH_API STP_Torus(const Vector3 & cNormal, const Point3 & cCenter, Scalar cRadius, Scalar sRadius);
56  SCH_API STP_Torus(const STP_Torus & t);
58 
59  SCH_API void setVVR(const STP_VVR * vvr);
60 
61  SCH_API virtual void print() const;
62 
63  SCH_API virtual bool isHere(const Vector3 & v) const;
64  SCH_API virtual bool isHereFarthestNeighbour(const Vector3 & v);
65  SCH_API virtual bool isHereFarthestNeighbourPrime(const Vector3 & v);
66  SCH_API virtual bool isHereFirstNeighbour(const Vector3 & v);
67  SCH_API virtual bool isHereFirstNeighbourPrime(const Vector3 & v, int idp);
68  SCH_API virtual bool isHereHybrid(const Vector3 & v, int idp);
69  SCH_API virtual int getNextBV(unsigned int id) const;
70  SCH_API virtual int getNextBVPrime() const
71  {
72  return m_nextBVPrime;
73  }
74  SCH_API virtual Scalar supportH(const Vector3 & v) const;
75  SCH_API virtual Point3 support(const Vector3 & v) const;
76 
77  SCH_API virtual STP_Feature * clone() const;
78 
79  template<class Archive>
80  void serialize(Archive & ar, const unsigned int /*version*/)
81  {
82  ar & boost::serialization::base_object<STP_Feature>(*this);
88  }
89 
90 protected:
94  int m_nextBV[4];
95 };
96 
97 } // namespace sch
98 
99 #endif
sch::s_STP_Circle::operator==
bool operator==(const s_STP_Circle &c) const
Definition: STP_Torus.h:28
oserializer.hpp
sch::s_STP_Circle::serialize
void serialize(Archive &ar, const unsigned int)
Definition: STP_Torus.h:34
sch
Definition: CD_Pair.h:11
sch::STP_Torus::isHereFarthestNeighbour
virtual SCH_API bool isHereFarthestNeighbour(const Vector3 &v)
sch::STP_Feature::m_nextBVPrime
int m_nextBVPrime
Definition: STP_Feature.h:132
sch::STP_Torus
Definition: STP_Torus.h:51
sch::s_STP_Circle::m_center
Point3 m_center
Definition: STP_Torus.h:25
sch::STP_Torus::m_VVR1
STP_VVR m_VVR1
Definition: STP_Torus.h:93
SCH_API
#define SCH_API
Definition: sch_api.h:13
sch::STP_Torus::m_VVR0
STP_VVR m_VVR0
Definition: STP_Torus.h:93
sch::STP_Torus::print
virtual SCH_API void print() const
sch::STP_Torus::m_sphereRadius
Scalar m_sphereRadius
Definition: STP_Torus.h:92
sch::STP_Torus::getNextBVPrime
virtual SCH_API int getNextBVPrime() const
Definition: STP_Torus.h:70
sch::s_STP_VVR::m_outerSTP
int m_outerSTP
Definition: STP_Feature.h:39
sch::STP_Torus::setVVR
SCH_API void setVVR(const STP_VVR *vvr)
sch::STP_Torus::clone
virtual SCH_API STP_Feature * clone() const
sch::s_STP_VVR
Definition: STP_Feature.h:12
sch::STP_Torus::getNextBV
virtual SCH_API int getNextBV(unsigned int id) const
sch::STP_Torus::supportH
virtual SCH_API Scalar supportH(const Vector3 &v) const
sch::STP_Torus::isHereHybrid
virtual SCH_API bool isHereHybrid(const Vector3 &v, int idp)
sch::STP_Torus::STP_Torus
SCH_API STP_Torus()
sch::STP_Torus::serialize
void serialize(Archive &ar, const unsigned int)
Definition: STP_Torus.h:80
sch::s_STP_Circle::m_normal
Vector3 m_normal
Definition: STP_Torus.h:24
sch::STP_Torus::isHereFirstNeighbour
virtual SCH_API bool isHereFirstNeighbour(const Vector3 &v)
sch::STP_Torus::~STP_Torus
SCH_API ~STP_Torus()
sch::STP_Torus::m_circle
STP_Circle m_circle
Definition: STP_Torus.h:91
sch_api.h
STP_Feature.h
sch::s_STP_Circle
Definition: STP_Torus.h:22
sch::STP_Torus::m_VVR2
STP_VVR m_VVR2
Definition: STP_Torus.h:93
sch::STP_Torus::support
virtual SCH_API Point3 support(const Vector3 &v) const
CD_Matrix::Vector3T< Scalar, false >
sch::s_STP_Circle::m_radius
Scalar m_radius
Definition: STP_Torus.h:26
sch::STP_Torus::isHereFarthestNeighbourPrime
virtual SCH_API bool isHereFarthestNeighbourPrime(const Vector3 &v)
sch::Scalar
double Scalar
Definition: SCH_Types.h:23
sch::STP_Torus::isHere
virtual SCH_API bool isHere(const Vector3 &v) const
sch::STP_Torus::m_VVR3
STP_VVR m_VVR3
Definition: STP_Torus.h:93
sch::STP_Torus::isHereFirstNeighbourPrime
virtual SCH_API bool isHereFirstNeighbourPrime(const Vector3 &v, int idp)
sch::STP_Circle
struct sch::s_STP_Circle STP_Circle
sch::STP_Torus::m_nextBV
int m_nextBV[4]
Definition: STP_Torus.h:94
sch::STP_Feature
Definition: STP_Feature.h:102
sch::s_STP_Circle::s_STP_Circle
s_STP_Circle()
Definition: STP_Torus.h:40