00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_VIEW_DATATYPE_VERTEX2_H
00008 #define BALL_VIEW_DATATYPE_VERTEX2_H
00009
00010 #ifndef BALL_COMMON_H
00011 # include <BALL/common.h>
00012 #endif
00013
00014 #ifndef BALL_MATHS_VECTOR3_H
00015 # include <BALL/MATHS/vector3.h>
00016 #endif
00017
00018 namespace BALL
00019 {
00020 namespace VIEW
00021 {
00022
00032 class BALL_VIEW_EXPORT Vertex2
00033 {
00034 public:
00035
00036 BALL_CREATE(Vertex2)
00037
00038
00041
00046 Vertex2();
00047
00050 Vertex2(const Vertex2& vertex);
00051
00053
00056
00059 virtual ~Vertex2();
00060
00066 virtual void clear();
00067
00069
00072
00077 void set(const Vertex2& vertex);
00078
00084 const Vertex2& operator = (const Vertex2& vertex);
00085
00088 void swap(Vertex2& vertex);
00089
00091
00094
00099 void setVertex1(const Vector3& v);
00100
00104 void setVertex1(const float x, const float y, const float z);
00105
00110 Vector3& getVertex1();
00111
00114 const Vector3& getVertex1() const;
00115
00121 void getVertex1(Vector3& v) const;
00122
00126 void getVertex1(float& x, float& y, float& z) const;
00127
00142 void setVertex1Address(const Vector3& v);
00143
00151 void setDefaultVertex1Address();
00152
00157 Vector3* getVertex1Address() const;
00158
00163 void setVertex2(const Vector3& v);
00164
00168 void setVertex2(const float x, const float y, const float z);
00169
00174 Vector3& getVertex2();
00175
00179 const Vector3& getVertex2() const;
00180
00187 void getVertex2(Vector3& v) const;
00188
00192 void getVertex2(float& x, float& y, float& z) const;
00193
00208 void setVertex2Address(const Vector3& v);
00209
00219 void setDefaultVertex2Address();
00220
00225 Vector3* getVertex2Address() const;
00226
00232 void setVertices(const Vector3& vertex1, const Vector3& vertex2);
00233
00237 void setVertices
00238 (const float vertex1_x,
00239 const float vertex1_y,
00240 const float vertex1_z,
00241 const float vertex2_x,
00242 const float vertex2_y,
00243 const float vertex2_z);
00244
00253 void setVertexAddresses(const Vector3& vertex1, const Vector3& vertex2);
00254
00260 void getVertices(Vector3& vertex1, Vector3& vertex2);
00261
00266 void getVertices
00267 (float& vertex1_x, float& vertex1_y, float& vertex1_z,
00268 float& vertex2_x, float& vertex2_y, float& vertex2_z);
00269
00280 void setDefaultVertexAddresses();
00281
00283
00286
00296 bool isDefaultVertex1Address() const;
00297
00307 bool isDefaultVertex2Address() const;
00308
00319 bool isDefaultVertexAddresses() const;
00320
00322
00325
00329 virtual bool isValid() const;
00330
00338 virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
00339
00341
00342 private:
00343
00344
00345 Vector3 vertex1_;
00346
00347
00348 Vector3 vertex2_;
00349
00350
00351 Vector3* vertex1_ptr_;
00352
00353
00354 Vector3* vertex2_ptr_;
00355 };
00356
00357
00358 # ifndef BALL_NO_INLINE_FUNCTIONS
00359 # include <BALL/VIEW/DATATYPE/vertex2.iC>
00360 # endif
00361
00362 }
00363 }
00364
00365 #endif // BALL_VIEW_DATATYPE_VERTEX2_H