Optimize circle gaps detection

This commit is contained in:
2024-06-24 02:42:01 +02:00
parent 6256a0e879
commit d507510b16
3 changed files with 38 additions and 13 deletions

View File

@@ -66,20 +66,26 @@ class Circle:
def _remove_gaps(outter_line: List[Point2D], inner_line: List[Point2D]) -> List[Point2D]:
gaps = []
for i in range(len(outter_line)):
if Circle._count_neighbors(outter_line[i], inner_line) == 0:
if Circle._count_neighbors(Point2D(outter_line[i].x-1, outter_line[i].y), inner_line) > 1:
nearest_index = outter_line[i].nearest(
inner_line, True)[0]
potential_neighbors = [inner_line[(nearest_index+j) % len(inner_line)]
for j in range(-10, 10, 1)]
print("\n\n", nearest_index,
inner_line[nearest_index], potential_neighbors)
if Circle._count_neighbors(outter_line[i], potential_neighbors) == 0:
if Circle._count_neighbors(Point2D(outter_line[i].x-1, outter_line[i].y), potential_neighbors) > 1:
if Point2D(outter_line[i].x-1, outter_line[i].y) not in outter_line:
gaps.append(
Point2D(outter_line[i].x-1, outter_line[i].y))
if Circle._count_neighbors(Point2D(outter_line[i].x+1, outter_line[i].y), inner_line) > 1:
if Circle._count_neighbors(Point2D(outter_line[i].x+1, outter_line[i].y), potential_neighbors) > 1:
if Point2D(outter_line[i].x+1, outter_line[i].y) not in outter_line:
gaps.append(
Point2D(outter_line[i].x+1, outter_line[i].y))
if Circle._count_neighbors(Point2D(outter_line[i].x, outter_line[i].y-1), inner_line) > 1:
if Circle._count_neighbors(Point2D(outter_line[i].x, outter_line[i].y-1), potential_neighbors) > 1:
if Point2D(outter_line[i].x, outter_line[i].y-1) not in outter_line:
gaps.append(
Point2D(outter_line[i].x, outter_line[i].y-1))
if Circle._count_neighbors(Point2D(outter_line[i].x, outter_line[i].y+1), inner_line) > 1:
if Circle._count_neighbors(Point2D(outter_line[i].x, outter_line[i].y+1), potential_neighbors) > 1:
if Point2D(outter_line[i].x, outter_line[i].y+1) not in outter_line:
gaps.append(
Point2D(outter_line[i].x, outter_line[i].y+1))