He dado algunos puntos (coordenadas 2D) y quiero encontrar el círculo más pequeño, que incluye todos estos puntos. El algoritmo no tiene que ser muy eficiente (aunque sería agradable naturalmente).¿Cómo puedo encontrar el círculo mínimo que incluye algunos puntos dados?
Respuesta
El enlace es muy interesante, pero los resultados mencionados allí no están actualizados. El algoritmo de Nimrod Megiddo de 1983 es una solución de tiempo lineal, pero hay algoritmos mucho más prácticos, como el de Welzl, ver [esta respuesta] (http://stackoverflow.com/a/17329529/734191). – Hbf
Ésta es la llamada más pequeño que encierra bolas problema (en su caso, Encerrando círculo más pequeño), también denominado Miniball. Hay varios algoritmos e implementaciones que hay para este problema - todos de los siguientes son soluciones en tiempo lineal (es decir, dados n bolas, corren en O (n) si se tiene en cuenta la dimensión d fijo, d = 2 en su caso):
Para 2D y 3D, Gärtner's implementation es probablemente la más rápida.
Para dimensiones superiores (hasta 10.000, por ejemplo), consulte https://github.com/hbf/miniball, que es la implementación de un algoritmo por Gärtner, Kutz y Fischer (nota: soy uno de los coautores).
Para dimensiones muy, muy altas, core-set (aproximación) los algoritmos serán más rápidos.
Nota: Si usted está buscando un algoritmo para calcular la esfera más pequeña que encierra de esferas, se encuentra una aplicación C++ en el Computational Geometry Algorithms Library (CGAL). (No necesita usar todo el CGAL, simplemente extraiga el encabezado requerido y los archivos fuente).
- 1. Encontrar el corte mínimo en un gráfico tal que los vértices dados están desconectados
- 2. Dados 3 puntos, ¿cómo calculo el vector normal?
- 3. Geoserver - ¿Cómo puedo dibujar una línea geodésica que representa el círculo máximo entre dos puntos
- 4. Cuenta el número de puntos dentro de un círculo rápido
- 5. Cómo calcular el vértice de una parábola dados tres puntos
- 6. graph - ¿Cómo encontrar el ciclo dirigido mínimo (peso mínimo total)?
- 7. Encontrar el punto que suma de distancias al conjunto de otros puntos es mínimo
- 8. Cómo utilizar linq para encontrar el mínimo
- 9. ¿Cuál es el algoritmo para encontrar el centro de un círculo a partir de tres puntos?
- 10. Si varios puntos compensan un círculo?
- 11. Encontrar el mínimo y máximo en python
- 12. Cómo encontrar el costo mínimo de vincular dos conjuntos de puntos
- 13. cómo construir un RTree usando los puntos de datos dados
- 14. cómo generar mapas de calor dados los puntos
- 15. Encontrar el punto más cercano a un conjunto de puntos en el plano
- 16. Encontrar si un círculo está dentro de otro círculo
- 17. Encontrar el valor mínimo en un mapa
- 18. ¿Cómo encontrar el índice del elemento con un valor mínimo?
- 19. ¿Cómo encontrar el valor mínimo en una matriz numpy?
- 20. calcular la distancia dados 2 puntos, latitud y longitud
- 21. ¿Cómo puedo encontrar el máximo o el mínimo de una matriz multidimensional en MATLAB?
- 22. Dibujar arco con 2 puntos y el centro del círculo
- 23. ¿Cómo puedo crear un círculo que tenga un número?
- 24. Ruby: ¿Cómo encontrar el índice del elemento de matriz mínimo?
- 25. Círculo más pequeño que cubre puntos determinados en el plano 2D
- 26. ¿Cómo puedo encontrar el centro del objeto?
- 27. Encuentra más puntos encerrados en un tamaño fijo círculo
- 28. Cómo encontrar la clave mínimo en el diccionario
- 29. Dados: Simulando un juego de Dados
- 30. gcc - cómo encontrar la ruta del encabezado, incluye el archivo
Posible duplicado de [Círculo más pequeño que cubre determinados puntos en el plano 2D] (http://stackoverflow.com/questions/4901535/smallest-circle-which-covers-given-points-on-2d-plane); hay una respuesta idéntica del mismo usuario, y la otra pregunta tiene una mejor redacción, en mi opinión. La respuesta de solo enlace en esta versión tampoco es excelente ... – Benjamin