------------------------------------------------------------------------------
| 153 | |
| 154 | //------------------------------------------------------------------------------ |
| 155 | double vtkDijkstraImageGeodesicPath::CalculateStaticEdgeCost( |
| 156 | vtkDataSet* inData, vtkIdType u, vtkIdType v) |
| 157 | { |
| 158 | vtkImageData* image = vtkImageData::SafeDownCast(inData); |
| 159 | |
| 160 | double p1[3]; |
| 161 | image->GetPoint(u, p1); |
| 162 | double p2[3]; |
| 163 | image->GetPoint(v, p2); |
| 164 | |
| 165 | double pcoords[3]; |
| 166 | int ijk1[3]; |
| 167 | int ijk2[3]; |
| 168 | image->ComputeStructuredCoordinates(p1, ijk1, pcoords); |
| 169 | image->ComputeStructuredCoordinates(p2, ijk2, pcoords); |
| 170 | |
| 171 | double cost = this->ImageWeight * |
| 172 | (image->GetScalarComponentAsDouble(ijk1[0], ijk1[1], ijk1[2], 0) + |
| 173 | image->GetScalarComponentAsDouble(ijk1[0], ijk1[1], ijk1[2], 0)); |
| 174 | |
| 175 | if (this->EdgeLengthWeight != 0.0) |
| 176 | { |
| 177 | cost += |
| 178 | this->EdgeLengthWeight * (sqrt(vtkMath::Distance2BetweenPoints(p1, p2)) / this->PixelSize); |
| 179 | } |
| 180 | |
| 181 | return cost; |
| 182 | } |
| 183 | |
| 184 | //------------------------------------------------------------------------------ |
| 185 | double vtkDijkstraImageGeodesicPath::CalculateDynamicEdgeCost( |
no test coverage detected