9 #include "imstkImageData.h" 11 #include <unordered_set> 31 Node(
int nodeId,
double cost, Vec3i coord) :
32 m_nodeId(nodeId), m_cost(cost), m_coord(coord)
38 bool operator()(
const Node& a,
const Node& b)
40 return a.m_cost > b.m_cost;
45 bool isVisited(
int nodeId) {
return m_visited.count(nodeId) == 0 ? false :
true; }
46 double getDistance(
int nodeId) {
return m_distances.count(nodeId) == 0 ? IMSTK_DOUBLE_MAX : m_distances.at(nodeId); }
50 void solveNode(Vec3i coord,
int index);
52 void setSeeds(std::vector<Vec3i> seedVoxels) { m_seedVoxels = seedVoxels; }
53 void setVisited(std::unordered_set<int> visited) { m_visited = visited; }
54 void setDistnaces(std::unordered_map<int, double> distances) { m_distances = distances; }
55 void setImage(std::shared_ptr<ImageData> image) { m_imageData = image; }
56 void setDistThreshold(
double distThreshold) { m_distThreshold = distThreshold; }
60 std::shared_ptr<ImageData> m_imageData;
65 std::unordered_set<int> m_visited;
66 std::unordered_map<int, double> m_distances;
69 std::vector<Vec3i> m_seedVoxels;
72 double m_distThreshold;
74 std::priority_queue<Node, std::vector<Node>,
NodeComparator> m_queue;