Middle — Senior
Como determinar o eixo de simetria vertical para uma lista de pontos?
sobes.tech IA
Resposta da IA
Para determinar o eixo de simetria vertical para um conjunto de pontos num plano, pode usar a seguinte abordagem:
- Encontrar o valor mínimo e máximo ao longo do eixo X entre todos os pontos:
minXemaxX. - Supor que o eixo de simetria é uma linha vertical
x = (minX + maxX) / 2. - Verificar para cada ponto se existe o seu reflexo relativamente a este eixo, ou seja, um ponto com coordenadas
(2 * axisX - x, y).
Se para todos os pontos for encontrado um ponto refletido correspondente, então a linha x = axisX é o eixo de simetria.
Exemplo em Python:
def tem_simetria_vertical(pontos):
xs = [p[0] for p in pontos]
min_x, max_x = min(xs), max(xs)
axis_x = (min_x + max_x) / 2
conjunto_pontos = set(pontos)
for x, y in pontos:
refletido = (2 * axis_x - x, y)
if refletido not in conjunto_pontos:
return False, None
return True, axis_x
# Exemplo de uso:
pontos = [(1,2), (3,2), (1,4), (3,4)]
resultado, eixo = tem_simetria_vertical(pontos)
if resultado:
print(f"Eixo de simetria: x = {eixo}")
else:
print("Eixo de simetria não encontrado")
Este método funciona para conjuntos discretos de pontos e verifica a correspondência exata dos pontos refletidos.