26 m_ElementVector.clear();
31 return m_ElementVector;
36 m_ElementVector = elementVector;
41 return m_ElementVector.size();
46 m_ElementVector.push_back(element);
51 m_ElementVector.insert(m_ElementVector.begin() + position, element);
57 throw std::runtime_error(
"Exception thrown in TubeGraphEdge::getTubeElement(uint): getTubeElement(uint)");
59 return m_ElementVector[position];
66 std::vector<float> diff;
71 if (numberOfElements == 0)
77 diff[0] = pos1[0] - pos2[0];
78 diff[1] = pos1[1] - pos2[1];
79 diff[2] = pos1[2] - pos2[2];
81 float sum = diff[0] * diff[0] + diff[1] * diff[1] + diff[2] * diff[2];
82 length = length + std::sqrt(sum);
90 diff[0] = pos1[0] - pos2[0];
91 diff[1] = pos1[1] - pos2[1];
92 diff[2] = pos1[2] - pos2[2];
94 float sum = diff[0] * diff[0] + diff[1] * diff[1] + diff[2] * diff[2];
95 length = length + std::sqrt(sum);
98 for (
unsigned int i = 0; i < numberOfElements - 1; ++i)
103 diff[0] = pos1[0] - pos2[0];
104 diff[1] = pos1[1] - pos2[1];
105 diff[2] = pos1[2] - pos2[2];
107 sum = diff[0] * diff[0] + diff[1] * diff[1] + diff[2] * diff[2];
108 length = length + std::sqrt(sum);
112 pos1 = (this->
GetTubeElement(numberOfElements - 1))->GetCoordinates();
115 diff[0] = pos1[0] - pos2[0];
116 diff[1] = pos1[1] - pos2[1];
117 diff[2] = pos1[2] - pos2[2];
119 sum = diff[0] * diff[0] + diff[1] * diff[1] + diff[2] * diff[2];
120 length = length + std::sqrt(sum);
128 float diameterSum = 0.0;
132 if (dynamic_cast<const mitk::CircularProfileTubeElement *>(source.
GetTubeElement()))
137 for (
unsigned int i = 0; i < numberOfElements; i++)
139 if (dynamic_cast<const mitk::CircularProfileTubeElement *>(this->
GetTubeElement(i)))
144 if (dynamic_cast<const mitk::CircularProfileTubeElement *>(target.
GetTubeElement()))
147 return diameterSum / (numberOfElements + 2);
152 return (m_ElementVector == right.m_ElementVector);
bool operator==(const TubeGraphEdge &right) const
float GetEdgeLength(TubeGraphVertex &source, TubeGraphVertex &target)
void SetElementVector(std::vector< TubeElement *> elementVector)
Base Class for Tube Graph Vertices.
void AddTubeElement(TubeElement *element)
Abstract class for elements which describes tubular structur.
float GetEdgeAverageDiameter(TubeGraphVertex &source, TubeGraphVertex &target)
Class for elements which describes tubular structur with a circular cross section.
Base Class for Tube Graph Edges.
const TubeElement * GetTubeElement() const
TubeElement * GetTubeElement(unsigned int position)
std::vector< TubeElement * > GetElementVector()
unsigned int GetNumberOfElements() const
void AddTubeElementAt(unsigned int position, TubeElement *element)