![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.09.2011
Сообщений: 17
|
![]()
Дано множество точек, заданных своими координатами (оси направлены так: (0,0) - левый верхний угол, ось x - вправо, ось y - вниз, все координаты положительны).
надо найти радиус и координаты центра окружности, которая проходит через хотя бы три точки и содержит внутри себя наибольшее количество точек из множества. Мне нужен алгоритм на ЕСТЕСТВЕННОМ языке: "обычную" геометрию понимаю плохо и ненавижу ещё со школы. Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Уравнение окружности знаем? Берем одну из точек за центр, остальные подставляем в уравнение. Это в общих чертах... Конкретно я бы подумал как выбрать точку в центре скопления остальных точек, чтобы повысить шансы на успех.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
И непонятно, как Вы собираетесь решать задачу на геометрию БЕЗ геометрии?!.. |
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
1. берем любые три точки (a,b,c)
вычисляем центр и радиус (x,r) окружности проходящей через три точки. ищем уравнение окружности подставляем координаты, решаем систему уравнений 2. если есть берем четвертую точку (d). иначе заканчиваем работу. нужна формула расстояния между двумя точками на плоскости. определяем ее расстояние до центра окружности (п1) 3. если расстояние <= радиуса(r) то точка внутри окружности (или НА окружности) и берем новую точку и переходим к п2. 4. в противном случаем выбираем новую окружность из тех что проходят через нашу точку (d) и две точки из трех (a,b,с). Таких окружностей возможно три. А четвертая оставшаяся точка должна лежать внутри этой окружности. т.е. проверяем (с) внутри (a,b, d); (b) внутри (a,c, d); (a) внутри (b,c, d) теперь п3 выполняется, поэтому берем новую точку и повторяем п2.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 08.11.2011 в 09:59. |
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
в помощь решающему:
1) ОТСЮДА Цитата:
находил для неё МАКСИМАЛЬНО УДАЛЁННУЮ. а потом для этой пары перебирал все оставшиеся точки, для каждой полученной тройки находя центр и радиус описанной окружности, проверял - сколько точек попадает внутрь круга. Максимум, имхо, и даст нужный ответ. 3) для небольших количествах точек (меньше 100) можно тупо перебирать ВСЕ возможные сочетания. Пример перебора на Паскаль смотрите тут: Задача "Треугольник" Нахождения минимального периметра. Последний раз редактировалось Serge_Bliznykov; 08.11.2011 в 10:29. |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Ну еще взгляд на задачу - берете треугольник и пытаетесь вписать его в окружность, например, достраивая его до прямоугольника (чтобы найти радиус и центр окружности). Но это чисто теоретически.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
![]() Коллега, для любого треугольника заведомо существует описанная вокруг него окружность. Код, который я привёл выше как раз и возвращает ЦЕНТР данной окружности. (радиус окружности можно найти, взяв расстояние от центра до любой вершины треугольника - до любой - потому что все три вершины треугольника лежат на описанной окружности). |
|
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
![]() ![]() ![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
![]() если интересно, то это нарисовано таким кодом: Код:
|
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 23.09.2011
Сообщений: 17
|
![]()
Спасибо. Буду думать. Под естественным языком я понимал русский язык, то есть, мне непонятно, как эту задачу решить геометрически.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++: немного геометрии)) | Blondy | Помощь студентам | 7 | 02.04.2011 14:59 |
Задача по геометрии (мат. методы) | XYLIGANXYL | Общие вопросы по Java, Java SE, Kotlin | 5 | 12.02.2011 22:20 |
Задача по геометрии на С | Matadora | Помощь студентам | 6 | 17.09.2010 10:09 |
Помогите решить задачу по геометрии | Prototype | Свободное общение | 2 | 25.02.2008 21:24 |