...&&((_ptr)/right <= 3.0 || right/(_ptr) <= 3.0)
Correct me if I am wrong, but this is always true. If You have two real numbers, like 'a' and 'b', a/b or b/a should be less than 1. I think because of this, things get connected which should not be, and we will have huge components.