una triangulo que programa matriz imprimir hacer geometricas figuras dibujar cuadrado corazon como circulo calcule java arraylist detection circle

triangulo - Reconocimiento de círculo java desde una matriz de puntos



programa en java area de un circulo (4)

Actualmente tengo una lista de puntos de un dibujo a mano alzada en un lienzo. Me preguntaba si hay un algoritmo simple para detectar si esa forma representa un círculo. Ya he investigado esto un poco y los principales elementos a los que me refiero son la transformación Hough o las imágenes de mapa de bits, pero ambos parecen un poco más la parte superior para lo que necesito. Cualquier sugerencia de algoritmos o implementación sería muy útil.

gracias de antemano sansoms,


Al leer su comentario, un método más fácil para dibujar un círculo es que el usuario haga clic en el punto central, luego arrastre el radio del círculo. Es mucho menos cálculo y más fácil para el usuario dibujar.

Puede hacer lo mismo con un rectángulo o cualquier otro polígono convexo.


Si no sabe lo que el usuario quería dibujar (por ejemplo, un círculo, una elipse, una línea o un rectángulo), podría usar algún algoritmo de optimización básico para encontrar la forma que mejor se adapte a los puntos dibujados a mano.

  • para cada forma básica (óvalo, rectángulo, triángulo, línea, etc.), cree una instancia aleatoria de esa forma y mida el error con los puntos dados
  • optimice cada una de las formas (individualmente) hasta que tenga la mejor coincidencia ovalada con los puntos dados, el rectángulo que mejor se ajuste a los puntos, el mejor triángulo, etc.
  • elige la forma que tenga el error más bajo y dibuja

Tal vez esta respuesta puede darte algunas ideas: https://.com/a/940041/12860

En resumen: calcule la segunda derivada. Si es bastante constante, probablemente sea un círculo.


Si interpreto tu pregunta correctamente, quieres saber si todos los puntos están en un círculo.

Como se ilustra en la imagen, elegimos tres puntos A, B, C de la lista y calculamos el origen O del círculo presunto. Al verificar la distancia entre O y cada punto de la lista, podemos concluir si estos puntos están en un círculo.