@Burk7589

Как восстановить окружность по массиву точек?

Подскажите алгоритм для восстановления окружности по массиву точек и определение центра этой окружности и диаметра или радиуса.
5f59d2e7e96c0369883448.png
  • Вопрос задан
  • 620 просмотров
Решения вопроса 1
twobomb
@twobomb
Ну как вариант, находим крайние точки: левую верхнюю, правую верхнюю, правую нижнюю и левую нижнюю.
В итоге получаем прямоугольник и вписываем окружность в этот прямоугольник
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
dollar
@dollar
Делай добро и бросай его в воду.
А как они распределены? Если равномерно, или хотя бы симметрично, то сначала ищем центр масс (среднее арифметическое всех координат по X и Y отдельно, ибо "массы" равны), а затем считаем среднее удаление точек от этого центра - это будет радиус. Центром и радиусом задаётся окружность.

Но если не равномерно и не симметрично, то сложно сказать. Например, такой случай:
spoiler
5f59dc800df79221516740.png
Ответ написан
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Почитайте про преобразование Хафа для окружностей
Ответ написан
Комментировать
@TheCalligrapher
Используйте алгоритм Эмо Велла (Emo Welzl) для построения минимальной охватывающей окружности

https://www.cyberforum.ru/geometry/thread1926478.h...
www.stsci.edu/~RAB/Backup%20Oct%2022%202011/f_3_Ca...

После чего уменьшите радиус найденной окружности (зафиксировав центр) так, чтобы количество точек внутри и снаружи стало примерно одинаковым.

Так как никаких детальных требований к искомой окружности вы не привели, этот алгоритм будет не лучше и не хуже любых других.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы