changed main loop: after search probability for min_points is surpassed, no more candidates are generated and the remaining ones are searched. Duplicate candidates are filtered. added Shape_base::is_same(): compares to shapes by testing distance and normal deviation from random points from other shape