Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448

Центр описанной окружности

18.09.2017, 20:06. Показов 6231. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан остроугольный треугольник координатами своих углов.
Нужен алгоритм (приближенный), который бы позволил достаточно
быстро вычислить центр описанной вокруг этого треугольника
окружности.
Решение
1. Несложно вычислить стороны треугольника
2. Потом площадь треугольника
3. Наконец радиус описанной окружности
4. Центр описанной окружности будет находиться внутри треугольника
5. Можно конечно с помощью случайных чисел определить с
заданной погрешностью этот центр...
А есть ли нечто более быстрое?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2017, 20:06
Ответы с готовыми решениями:

Для множества точек на плоскости найти диаметр и центр минимальной описанной окружности
Эх..помогите (надеюсь в последний раз)...Для множества точек плоскости p1(X1,Y1), p2(X2,Y2), ..., pN(Xn,Yn) найти диаметр и центр...

Найти отношение радиуса описанной окружности к радиусу окружности
Треугольник ABC вписан в окружность радиуса R. На сторонах AB и AC отметили соответственно точки М и N так, что AM : MB = AN : NC = 3....

Найти радиус вписанной окружности и радиус описанной окружности
Даны действительные положительные числа a,b,c, которые являются длинами сторон треугольника. Напишите программу, позволяющую найти радиус...

43
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
19.09.2017, 13:38
Студворк — интернет-сервис помощи студентам
Опять 25…для чего вам центр окружности по 3 точкам?
Вот аналитику показали… два других метода тоже придумал =). Быстрей метода 1 ничего не будет.
Цитата Сообщение от йот Посмотреть сообщение
Найдем в этом треугольнике центр описанной окружности
Это и есть окружность по трем точкам…дальше ненужные усложнения. Честно лень вникать.
0
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
19.09.2017, 14:12  [ТС]
Excalibur921,
я тут подумал... а что если взять в треугольнике произвольную точку
и из этой точки сделать шаг к той вершине треугольника, что дальше
всех... получим новую точку и новый шаг... в конце концов идти будет
некуда - все вершины на равном расстоянии...
...
надо подумать о величине шага...
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.09.2017, 14:16
Любые итерационные методы хуже аналитических и в смысле скорости и в смысле точности.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
19.09.2017, 18:54
Быстрей метода
Цитата Сообщение от Excalibur921 Посмотреть сообщение
1)Координаты в 2д разбить сеткой.
наверно ничего не существует.
Намного меньше база данных у метода 2 но он и медленней.

Добавлено через 3 часа 11 минут
Пределы координат вершин и точность центра?

Добавлено через 59 минут
Стоит прикинуть грубо размеры базы данных центров так становиться страшно.
50 на 50 сетка =2500 положений точки
точек 3 значит:
2500^3= 15 625 000 000 комбинаций
Координаты ответа 2 значит 15*2=30 Гиг флоат =).
Итого примерно 30 Гиг ответов и вход адрес 3 инт вектора…
Puporev, Этот код разве не быстрей?
Найти координаты центра окружности по трём точкам
йот, Берите 9 строк аналитики и находит центр точно без фантастических размеров базы данных.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.09.2017, 20:05
Excalibur921, По моему тоже, только вид сбоку.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
19.09.2017, 20:27
Ну давайте посчитаем если не пропустил ничего =).
Ваш код:
18 сложений \вычитаний
18 умнож\делений
36 действий

По моей ссылке:
15 сложений \вычитаний
13 умнож\делений
28 действий
Явно быстрей. Хоть это и voodoo math.
0
20.09.2017, 09:33

Не по теме:

Вот смотрю - сколько же интеллекта (не побоюсь этого слова) сжигается попусту, бездарно разбазаривается! Однако все мои попытки направить процесс в нужное русло неизменно заканчиваются полным фиаско :( Создаю тему - реальная задача, трудная но интересная. И.. вся словоохотливость куда-то испаряется. А немногие ответившие сразу же включают "непонималку", тема сваливается в пререкания и затухает. Но вот какую-то глупую комбинаторику или вообще полную фигню месят не жалея слов :)

Ну в общем "нет в жизни счастья"...

0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
20.09.2017, 10:47
Igor3D, Есть расчет быстрей?
Цитата Сообщение от Excalibur921 Посмотреть сообщение
По моей ссылке:
15 сложений \вычитаний
13 умнож\делений
28 действий
Какие-то барицентрические или прочая экзотика…
Допустим вход 3 вектора флоат выход 1 вектор флоат. Быстрей 28 математических есть метод?
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
20.09.2017, 11:29
https://ru.wikipedia.org/wiki/Описанная_окружность
Казалось бы мелкий расчет да?

Вот прикинем все что математики не написали то программистам огребать =)
Набросал код лень проверять...он уже проиграл.
rA rB rC вершины
a=Sqrt((rBx-rCx)^2+(rBy-rCy)^2) длина BC
b=Sqrt((rAx-rCx)^2+(rAy-rCy)^2) длина AC
c=Sqrt((rAx-rBx)^2+(rAy-rBy)^2) длина AB
p=(a+b+c)/2
S=Sqrt(p*(p-a)*(p-b)*(p-c))
A0=8*S^2
A1=a^2/A0
A2=b^2/A0
A3=c^2/A0
Aax=A1*(rAx-rBx)
Aay=A1*(rAy-rCy)
Abx=A2*(rBx-rAx)
Aby=A2*(rBy-rCy)
Acx=A3*(rCx-rAx)
Acy=A3*(rCy-rBy)
r0x=Aax*rAx+Abx*rBx+Acx*rCx
r0y=Aay*rAy+Aby*rBy+Acy*rCy
24 сложений\вычитаний
33 умножений\делений\корней
57 действий Ого..
А что если тот код по моей ссылке самый быстрый в мире?
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
20.09.2017, 19:05
йот, Утратили интерес к задаче? Нужны хоть примерно макс\мин возможные координаты вершин и точность центра окружности.
0
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
20.09.2017, 19:17  [ТС]
Excalibur921
я не утратил интереса к своей теме... я разрабатываю более
быстрый алгоритм решения... по сути прямое решение...
кажется... я нашел...

Добавлено через 3 минуты
Можете поместить одну вершину прямо в центр
Декартовой системы координат... это ускорит решение...
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
20.09.2017, 19:51
А это секрет?
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Нужны хоть примерно макс\мин возможные координаты вершин и точность центра окружности.
0
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
20.09.2017, 20:18  [ТС]
Excalibur921,
Это не секрет... я даже не подумал об этом...
Примените масштабирование... а сам треугольник
в отношении (большая сторона)/(малая сторона) < 2
...
то есть треугольник более похож на равносторонний...
тут целая теория о Степени подобия треугольников.
Вот пример... даны два треугольника с углами A1; B1; C1
и A2 B2 C2... углы заданы в порядке возрастания
D - Степень подобия треугольников... тогда
D = |A1 - A2| + |B1 - B2| + |C1 - C2| (это определение)
вывод: при D = 0 треугольники подобны...
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
20.09.2017, 20:29
Найти длины всех сторон.
Найти макс длину стороны MaxL0.
Найти макс длину стороны из двух оставшихся сторон MaxL1.
Найти какой вершине (хранить имя в A0) треугольника принадлежат эти стороны.
Найти угол Alfa0 между сторонами MaxL0 MaxL1 при A0.
Пересчитать длину в долях от наибольшей MaxL1New=MaxL1/MaxL0

Теперь любой треугольник можно представить так:
MaxL0 будет лежать на OX и длинной 1.
Зная Alfa0 и длинну MaxL1New отложить от ОХ против часовой и найти координаты точки P.
Название: ScreenShot00418.jpg
Просмотров: 46

Размер: 7.5 Кб
Поскольку MaxL1New всегда <1 то любой треугольник покажет точку принадлежащую сектору круга.
Осталось разбить это поле сеткой точек в которых нужно аналитически посчитать центр описанной окружности заранее и сделать базу данных ответов.
Название: ScreenShot00419.jpg
Просмотров: 46

Размер: 15.3 Кб
Работает так:
1)Задан произвольно ABC.
2)Нашли вершину треугольника в закрашенной области (красная P).
3)Округлили ее координаты( к какому узлу сетки она ближе Фиолетовая) и получили адрес (i,j) в котором ответ координаты центра окружности вокруг этого мелкого треугольника точка M.
4)Ставим M в этом мелком треугольнике масштабируем и крутим треугольник обратно.
5)Получили центр M найденный по аналитически заданным двум вершинам, а третья округлена. База данных очень мелкая.
Вопрос только будет ли это быстрей чем 28 действий.
Название: ScreenShot00421.jpg
Просмотров: 45

Размер: 18.4 Кб
1
27 / 32 / 14
Регистрация: 08.09.2017
Сообщений: 448
20.09.2017, 21:04  [ТС]
Excalibur921,
вы правы, я тоже изначально хотел применить случайные
числа для поиска центра описанной вокруг треугольника
окружности...
Но вот частные случаи дали фантастически быстрый результат
я приводил пример остроугольного треугольника близкого к
прямоугольному... середина самой длинной стороны этого
треугольника и будет ответом с некоторой погрешностью...
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
20.09.2017, 21:31
Цитата Сообщение от йот Посмотреть сообщение
хотел применить случайные
числа
Какие случайные числа? Здесь их нет. Ничего не поняли? =\.

Не знаю что за теории...может так проще?
Если есть два близких +- Delta по значению угла то это равнобедренный.
Если все углы близки к 60+- Delta градусов то равносторонний.
Если один угол близок к 90+- Delta град то прямоугольный.
Поскольку все эти 3 вида крайне редкие…то смысл?
Если только у вас не огромная Delta. Всеравно выпадает огромное количество других случаев.

Метод что я описал выше перемалывает любые треугольники… вопрос в скорости и оптимизации математики.

Была идея что всякий треугольник это равносторонний+некая деформация сдвига+ деформация масштабирования вдоль некоторой линии. Может тут как то подойти…найти их величину, посчитать для равностороннего и применить трансформации к центру описанной окружности.Тут нужен взгляд математика.

А этот самый простой и быстрый:
Цитата Сообщение от Excalibur921 Посмотреть сообщение
1)Координаты в 2д разбить сеткой
но вы молчите про точность и пределы координат поэтому он скорей утопия.
Черный круг аналитический, красный по узлам сетки.
Название: Video_2017-09-20_210928.gif
Просмотров: 47

Размер: 832.9 Кб

Цитата Сообщение от йот Посмотреть сообщение
(большая сторона)/(малая сторона) < 2
Кстати тогда и поле меньше:
Название: ScreenShot00423.jpg
Просмотров: 45

Размер: 18.8 Кб
1
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
21.09.2017, 10:24
Координаты вершин треугольника от 0 до 5 с плавающей.
Сетка точек 5 на 5.
a=round(x(A)) //округляет до целых
b=round(y(A))
c=round(x(B))
d=round(y(B))
e=round(x(С))
f=round(y(С))
Вот тут хитрая задачка, нужна функция возвращающая уникальное число для уникальной комбинации a,b,c,d,e,f.
Получим уникальное число f(a,b,c,d,e,f)=a + 5*b+25*c+125*d+625*e+3125*f
А может так правильно?
a + 10*b+100*c+1000*d+10000*e+100 000*f

Массив M[i] по адресу i содержит 2д вектора центров описанных окружностей посчитаны заранее для треугольников по точкам A(a,b),B(c,d),C(e,f).

Работает так:
Округляем координаты вершин получаем a,b,c,d,e,f.
Получаем уникальное число f(a,b,c,d,e,f).
Читаем ответ M[f(a,b,c,d,e,f)] =центр описанной окружности.
Почему то математики не хотят ничего сказать =(.

Итого: 16 действий и база данных + грубый ответ против 28 действий аналитика есть ли смысл?
1
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.09.2017, 10:34
Цитата Сообщение от Excalibur921 Посмотреть сообщение
есть ли смысл?
Товарищ изобретает велосипед, ну хочется ему, это бывает.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
23.09.2017, 20:43
Если найдете такое уравнение, то есть идея как еще можно попробовать сделать поиск центра.
Нужна формула поверхности z=f(x,y) похоже на однополостный гиперболоид со сдвигом


или другая формула рисующая похожую поверхность просто.
Конкретно нужны только эти участки:

Есть идеи?
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,222
Записей в блоге: 2
24.09.2017, 12:09
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Нужна формула поверхности z=f(x,y) похоже на однополостный гиперболоид со сдвигом
Вы бы тему новую создали (нехорощо мусорить в чужих ). Фигуры такие делаются очень просто, только нужно не каноническое, а параметрическое ур-е, в общем виде

x = f(u, v)
y = f(u, v)
z = f(u, v)

Где u и v "параметры" меняющиеся с заданным шагом в заданных диапазонах. Напр полагаем v = 0, прогоняем u от 0 до 360 с швгом напр 10. Потом v = 1, опять прогоняем u и.т.д. Получившиеся "цепочки" соединяем полигонами. Начинаем с цилиндра

x = cos(u) * R
y = sin(u) * R
z = v

сдавливаем его в середке и двигаем по x напр так

x = cos(u) * R * (0.5 + cos(fabs(v - 5) / 10 * 30) + v;
y = sin(u) * R * (0.5 + cos(fabs(v - 5) / 10 * 30);
z = v

Вот и вся любовь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.09.2017, 12:09

Найти радиус описанной окружности
Добрый вечер, господа, есть такая задача, никак не могу ее решить. Дано n-количество сторон многоугольника, в нем есть такие стороны 1,2,3...

Найти радиус описанной окружности
найти радиус описанной окружности

Определить радиус описанной окружности.
Даны три стороны треугольника a, b, c. Определить радиус описанной окружности. a=11 b=17 c=22

Формула центра описанной окружности
Есть треугольник, координаты вершин, длины сторон, площадь треугольника. Надо найти центр описанной окружности. Формулы не нашел...

Найти радиус описанной окружности
Если три заданных положительных числа являются сторонами правильного треугольника, то найти радиус описанной около него окружности.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru