Sobes.tech
Middle — Senior

Comment déterminer l'axe de symétrie vertical pour une liste de points?

sobes.tech IA

Réponse de l'IA

Чтобы определить вертикальную ось симметрии для набора точек на плоскости, можно воспользоваться следующим подходом:

  1. Найти минимальное и максимальное значение по оси X среди всех точек: minX и maxX.
  2. Предположить, что ось симметрии — это вертикальная линия x = (minX + maxX) / 2.
  3. Проверить для каждой точки, существует ли точка-отражение относительно этой оси, то есть точка с координатами (2 * axisX - x, y).

Если для всех точек найдется соответствующая отраженная точка, то линия x = axisX является осью симметрии.

Пример на Python:

def has_vertical_symmetry(points):
    xs = [p[0] for p in points]
    min_x, max_x = min(xs), max(xs)
    axis_x = (min_x + max_x) / 2

    points_set = set(points)
    for x, y in points:
        reflected = (2 * axis_x - x, y)
        if reflected not in points_set:
            return False, None
    return True, axis_x

# Пример использования:
points = [(1,2), (3,2), (1,4), (3,4)]
result, axis = has_vertical_symmetry(points)
if result:
    print(f"Ось симметрии: x = {axis}")
else:
    print("Ось симметрии не найдена")

Этот метод работает для дискретного множества точек и проверяет точное совпадение отраженных точек.