CD_Simplex.h
Go to the documentation of this file.
1 
2 #ifndef _CD_SIMPLEX
3 #define _CD_SIMPLEX
4 
5 #pragma once
6 #ifndef _WIN32
7 # pragma GCC diagnostic ignored "-Wchar-subscripts"
8 #endif
9 
10 #include <sch/Matrix/SCH_Types.h>
11 #include <sch/sch_api.h>
12 
13 namespace sch
14 {
16 {
22 };
23 
28 {
29  char b1, b2, b3, b4;
30 
32 
34  {
35  b1 = b2 = b3 = b4 = -1;
36  }
37 
38  inline char & operator[](unsigned char i)
39  {
40  return ((i == 0) ? b1 : (i == 1) ? b2 : (i == 2) ? b3 : b4);
41  }
42 
43  inline const char & operator[](unsigned char i) const
44  {
45  return ((i == 0) ? b1 : (i == 1) ? b2 : (i == 2) ? b3 : b4);
46  }
47 
48  void reset()
49  {
50  b1 = b2 = b3 = b4 = -1;
51  }
52 };
53 
55 {
56 public:
57  SCH_API CD_Simplex(const CD_Simplex & rhs);
58 
59  SCH_API CD_Simplex(const Point3 & p);
60  SCH_API CD_Simplex(const Point3 & p1, const Point3 & p2);
61  SCH_API CD_Simplex(const Point3 & p1, const Point3 & p2, const Point3 & p3);
62  SCH_API CD_Simplex(const Point3 & p1, const Point3 & p2, const Point3 & p3, const Point3 & p4);
63 
64  SCH_API virtual ~CD_Simplex();
65 
67 
68  SCH_API const Point3 & operator[](unsigned char) const;
69  SCH_API Point3 & operator[](unsigned char);
70 
72  SCH_API CD_Simplex & operator=(const Point3 & p);
73 
74  SCH_API bool operator==(const CD_Simplex & s);
75  SCH_API bool operator!=(const CD_Simplex & s);
76 
82 
87  SCH_API CD_Simplex operator+(const Point3 &) const;
88 
94  SCH_API virtual void filter(const CD_SimplexKeptPoints & k);
95 
100 
104  SCH_API void updateVectors();
105 
109  SCH_API const Vector3 & AB() const;
110 
114  SCH_API const Vector3 & AC() const;
115 
119  SCH_API const Vector3 & AD() const;
120 
121 protected:
123 
126 
127  static const Scalar zero_;
128  static const Scalar zero2_;
129  static const Scalar zero3_;
130  static const Scalar zero4_;
131 };
132 
133 #include "CD_Simplex.hxx"
134 } // namespace sch
135 #endif
CD_Simplex.hxx
sch
Definition: CD_Pair.h:11
sch::CD_Simplex::ac_
Vector3 ac_
Definition: CD_Simplex.h:125
SCH_API
#define SCH_API
Definition: sch_api.h:13
sch::CD_Simplex::operator+=
SCH_API CD_Simplex & operator+=(const Point3 &)
Adds a point to a simplex to transform it in a higher dimemsion simplex (doesn't work with tetrahedro...
Definition: CD_Simplex.hxx:157
sch::CD_SimplexKeptPoints
Definition: CD_Simplex.h:27
sch::CD_Simplex::AC
const SCH_API Vector3 & AC() const
Returns AC vector.
Definition: CD_Simplex.hxx:41
sch::CD_Simplex::ab_
Vector3 ab_
Definition: CD_Simplex.h:125
sch::CD_Simplex::operator[]
const SCH_API Point3 & operator[](unsigned char) const
sch::CD_SimplexKeptPoints::reset
void reset()
Definition: CD_Simplex.h:48
sch::CD_Simplex::getType
SCH_API CD_SimplexType getType() const
Definition: CD_Simplex.hxx:77
SCH_Types.h
sch::CD_Simplex::operator+
SCH_API CD_Simplex operator+(const Point3 &) const
Adds a point to a simplex to transform it in a higher dimemsion simplex (doesn't work with tetrahedro...
Definition: CD_Simplex.hxx:178
sch::CD_Triangle
@ CD_Triangle
Definition: CD_Simplex.h:19
sch::CD_SimplexKeptPoints::CD_SimplexKeptPoints
CD_SimplexKeptPoints()
Definition: CD_Simplex.h:33
sch::CD_Segment
@ CD_Segment
Definition: CD_Simplex.h:18
sch::CD_Simplex::zero3_
static const Scalar zero3_
Definition: CD_Simplex.h:129
sch::CD_SimplexKeptPoints::b4
char b4
Definition: CD_Simplex.h:29
sch::CD_Simplex::operator==
SCH_API bool operator==(const CD_Simplex &s)
Definition: CD_Simplex.hxx:136
sch::CD_SimplexKeptPoints::operator[]
char & operator[](unsigned char i)
Definition: CD_Simplex.h:38
sch::CD_Simplex::operator!=
SCH_API bool operator!=(const CD_Simplex &s)
Definition: CD_Simplex.hxx:152
sch::CD_Simplex::s4_
Point3 s4_
Definition: CD_Simplex.h:124
sch::CD_SimplexKeptPoints::b2
char b2
Definition: CD_Simplex.h:29
sch::CD_SimplexKeptPoints::b1
char b1
Definition: CD_Simplex.h:29
sch_api.h
sch::CD_Simplex::zero4_
static const Scalar zero4_
Definition: CD_Simplex.h:130
sch::CD_Simplex::AB
const SCH_API Vector3 & AB() const
Returns AB vector.
Definition: CD_Simplex.hxx:36
sch::CD_Simplex::CD_Simplex
SCH_API CD_Simplex(const CD_Simplex &rhs)
Definition: CD_Simplex.hxx:92
sch::CD_Simplex::AD
const SCH_API Vector3 & AD() const
Returns AD vector.
Definition: CD_Simplex.hxx:46
sch::CD_Simplex::ad_
Vector3 ad_
Definition: CD_Simplex.h:125
sch::CD_Simplex::~CD_Simplex
virtual SCH_API ~CD_Simplex()
sch::CD_Simplex::filter
virtual SCH_API void filter(const CD_SimplexKeptPoints &k)
Updates the simplex by supressing some vertexes and/or change their order according to a filter.
Definition: CD_Simplex.hxx:196
sch::CD_Simplex::zero2_
static const Scalar zero2_
Definition: CD_Simplex.h:128
sch::CD_Simplex::zero_
static const Scalar zero_
Definition: CD_Simplex.h:127
sch::CD_Simplex::squareDistanceAtOrigin
SCH_API Scalar squareDistanceAtOrigin(const Vector3 &v) const
Gives the distance squared at the origin for a simplex, and according the direction v.
Definition: CD_Simplex.hxx:259
sch::CD_SimplexType
CD_SimplexType
Definition: CD_Simplex.h:15
sch::CD_SimplexKeptPoints::type
CD_SimplexType type
Definition: CD_Simplex.h:31
CD_Matrix::Vector3T< Scalar, false >
sch::CD_None
@ CD_None
Definition: CD_Simplex.h:21
sch::CD_Simplex::s2_
Point3 s2_
Definition: CD_Simplex.h:124
sch::CD_SimplexKeptPoints::b3
char b3
Definition: CD_Simplex.h:29
sch::CD_Simplex::updateVectors
SCH_API void updateVectors()
Updates AB,AC,AD vectors. A is the last vertex inserted and B, C and D are previous vertexes.
Definition: CD_Simplex.hxx:51
sch::CD_Simplex::s3_
Point3 s3_
Definition: CD_Simplex.h:124
sch::Scalar
double Scalar
Definition: SCH_Types.h:23
sch::CD_SimplexKeptPoints::operator[]
const char & operator[](unsigned char i) const
Definition: CD_Simplex.h:43
sch::CD_Simplex
Definition: CD_Simplex.h:54
sch::CD_Simplex::s1_
Point3 s1_
Definition: CD_Simplex.h:124
sch::CD_Point
@ CD_Point
Definition: CD_Simplex.h:17
sch::CD_Simplex::type_
CD_SimplexType type_
Definition: CD_Simplex.h:122
sch::CD_Tetrahedron
@ CD_Tetrahedron
Definition: CD_Simplex.h:20
sch::CD_Simplex::operator=
SCH_API CD_Simplex & operator=(const CD_Simplex &s)
Definition: CD_Simplex.hxx:97