Go to the documentation of this file.00001 #ifndef contact_point_h___
00002 #define contact_point_h___
00003
00004 #include "utilities.h"
00005 #include <iostream>
00006
00007 namespace ICR
00008 {
00009
00010
00019 class ContactPoint
00020 {
00021 private:
00022
00023 Eigen::Vector3d vertex_;
00024 Eigen::Vector3d vertex_normal_;
00025 IndexList neighbors_;
00026 uint id_;
00027
00028 public:
00029
00030 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
00031
00032 ContactPoint();
00033 ContactPoint(double const vertex[3]);
00034 ContactPoint(Eigen::Vector3d const& vertex);
00035 ContactPoint(double const vertex[3],uint id);
00036 ContactPoint(Eigen::Vector3d const& vertex,uint id);
00037 ContactPoint(double const vertex[3],double const vertex_normal[3],uint id);
00038 ContactPoint(Eigen::Vector3d const& vertex, Eigen::Vector3d const& vertex_normal,uint id);
00039 ContactPoint(double const vertex[3],double const vertex_normal[3], IndexList const& neighbors,uint id);
00040 ContactPoint(Eigen::Vector3d const& vertex,Eigen::Vector3d const& vertex_normal, IndexList const& neighbors,uint id);
00041 ContactPoint(ContactPoint const& src);
00042 ContactPoint& operator=(ContactPoint const& src);
00043 friend std::ostream& operator<<(std::ostream& stream, ContactPoint const& cp);
00044 ~ContactPoint();
00045
00046 Eigen::Vector3d* getVertex();
00047 Eigen::Vector3d const* getVertex() const;
00048 Eigen::Vector3d* getVertexNormal();
00049 Eigen::Vector3d const* getVertexNormal() const;
00050 void setVertex(Eigen::Vector3d const& vertex);
00051 void setVertex(double const vertex[3]);
00052 void setVertexNormal(Eigen::Vector3d const& vertex_normal);
00053 void setVertexNormal(double const vertex_normal[3]);
00054 void addNeighbor(uint neighbor);
00058 void filterDuplicateNeighbors();
00059 ConstIndexListIterator getNeighborItBegin()const;
00060 ConstIndexListIterator getNeighborItEnd()const;
00061 IndexList* getNeighbors();
00062 IndexList const* getNeighbors()const;
00063 uint getNumNeighbors()const;
00064 uint getId()const;
00065 void setId(uint id);
00066 };
00067
00068
00069 }
00070 #endif
00071
00072