I am currently working on a program, that can read a set of coordinates from a file forming a contour and then fill it out using the flood fill algorithm.
It seems that the code below runs in an infinite loop, but i can't seem to spot why.
Help or advice is much appreciated :-)
/* Flood fill */
TargetColour = 0.0;
NewColour = 2.0;
starting_point = 0+slice;
//Create queue
queue < int > MyQue;
//Insert first point into the queue
MyQue.push(starting_point);
//While loop for iterating over the nodes.
while (!MyQue.empty()){
//Take out the front element
Node = MyQue.front();
MyQue.pop();
tmpSlice[Node] = NewColour;
//Define the Node directions
WestNode = Node-1;
EastNode = Node+1;
NorthNode = Node-sizes[1];
SouthNode = Node+sizes[2];
//East Node
if (slab[EastNode] == TargetColour && floor((Node-sizes[1]*sizes[2]*floor(Node/(sizes[1]*sizes[2])))/sizes[1]) == floor((EastNode-sizes[1]*sizes[2]*floor(EastNode/(sizes[1]*sizes[2])))/sizes[1])){
MyQue.push(EastNode);
}
//West Node
if (slab[WestNode] == TargetColour && floor((Node-sizes[1]*sizes[2]*floor(Node/(sizes[1]*sizes[2])))/sizes[1]) == floor((WestNode-sizes[1]*sizes[2]*floor(WestNode/(sizes[1]*sizes[2])))/sizes[1])){
MyQue.push(WestNode);
}
//North Node
if (slab[NorthNode] == TargetColour && floor(Node / (sizes[1]*sizes[2])) == floor(NorthNode / (sizes[1]*sizes[2]))){
MyQue.push(NorthNode);
}
//South Node
if (slab[SouthNode] == TargetColour && floor(Node / (sizes[1]*sizes[2])) == floor(SouthNode / (sizes[1]*sizes[2]))){
MyQue.push(SouthNode);
}
}